我的Vuejs组件采用了" datasetId"作为道具。
我希望在我的情况下使用双向绑定,因此我使用.sync
修饰符
<mycomponent :datasetid.sync=1 />
在这个组件中,我有一个select
组件,我希望它能显示出好的数据集,所以我将它绑定到我的道具上。
<select-component v-model="datasetid" />
由于我们不能改变prop(数据提取是一个道具并将其绑定到v模型可能会改变数据提取)。我决定将此值包装在计算属性上。
<select-component v-model="computedDatasetid">
computed: {
computedDatasetid: {
get() {
return this.datasetid; // return the prop
},
set(v) {
// don't mutate the prop directly but update the parent component.
this.$emit('update:datasetid', v);
}
}
}
使用此代码,&#34; getter&#34;仅被称为1次(当组件第一次创建时)。这是合乎逻辑的,因为文档说明在更新内部数据时会更新计算属性。我不会在&#34; setter&#34;中更新任何内容。
如何在调用setter时强制模型更改? (例如:this.computedDadasetid = 5
)
计算属性是做我想要的好方法吗? 最好使用原始数据&#39;或观察者或其他什么?
谢谢