首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >不带setter的Vue v-model

不带setter的Vue v-model
EN

Stack Overflow用户
提问于 2018-09-18 18:17:04
回答 2查看 265关注 0票数 0

如何在没有setter的情况下使用vue计算的v-model?我有三个输入inputAinputBinputC,而inputC是从另外两个计算出来的。编辑inputC不应该影响inputA和vuetify的值,但应该与inputB同步,顺便说一句,我正在使用vuetify。

代码语言:javascript
复制
<v-text-field v-model="inputA"></v-text-field>
<v-text-field v-model="inputB"></v-text-field>
<v-text-field v-model="inputC"></v-text-field>
{{ inputA }}, {{ inputB }}, {{ inputC }}

....
data () {
  return {
    inputA: '',
    inputB: ''
  }
},
computed: {
  inputC () {
    return this.inputA + ' ' + this.inputB
  }
}
EN

回答 2

Stack Overflow用户

发布于 2018-09-18 18:26:25

使用watchers而不是computed

代码语言:javascript
复制
watch: {
    inputA: function() {
        this.inputC = this.inputA + this.inputB
    },
    inputB: function() {
        this.inputC = this.inputA + this.inputB
    }
}

这样,只有在手动编辑inputAinputB或手动编辑inputC时,inputC才会发生变化

票数 0
EN

Stack Overflow用户

发布于 2018-10-26 09:34:15

是的,你可以使用watch选项,检查这个例子:

代码语言:javascript
复制
Vue.component('v-text-field', {
	template: `<input v-model='data' type="text"
   v-on:change="$emit('change', $event.target.value)">`,
	model:  {
		prop: 'data',
		event: 'change'
	},
	props: {
		data: {default: ''}
	}
});

var vm = new Vue({
	el: '#app',
	data: {
		inputA: 'val a',
		inputB: 'val b',
		inputC: ''
	},
	watch: {
		inputA: function(val) {
			this.inputC = val + '-' + this.inputB;
		},
		inputB: function(val) {
			this.inputC = this.inputA + '-' + val;
		}
	}
});
代码语言:javascript
复制
<script src="https://cdn.jsdelivr.net/npm/vue@2.5.17/dist/vue.js"></script>

<div id='app'>
   <v-text-field v-model='inputA'></v-text-field>
   <v-text-field v-model='inputB'></v-text-field>
   <h3>{{ inputC }}</h3>
</div>

祝好运!

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52384301

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档