在我Vuejs(2.x版),我碰到如下:
vuejs:计算值的对象类型不支持双向数据绑定
Vue.component('service',{
template: '<div>' +
'<div>{{serviceData.serviceName}}</div>' +
'<input v-model="serviceData.serviceName">' +
'</div>',
props: ['serviceData'],
})
var demo = new Vue({
el: '#demo',
data: {
allData: {
serviceName: 'Service1',
serviceType: '0',
otherInfo: 'xxxinfo',
},
},
computed: {
serviceData() {
return {
serviceName: this.allData.serviceName,
serviceType: this.allData.serviceType,
};
},
},
})
<div id="demo">
<service :service-data="serviceData"></service>
</div>
如上,在我的Vue实例我有原始数据alldata
,这是一个对象类型。并且因为它包含一些其他非相关信息。我通过computed
创建了一个对象,其中只包含相关信息并将其命名为serviceData
。
并通过props
将serviceData对象传递给组件service
。
在service
组件中,我有一个输入元素,它与v型模型的双向绑定到serviceData.serviceName
。
但事实证明,双向绑定无法正常工作。
那么如何在这种情况下添加反应性。
请参阅本现场演示:
https://jsfiddle.net/baoqger/t3mr9de3/1/
我认为将vuex合并到您的应用程序将是最好的方法。 – WaldemarIce