我不确定我这样做是对还是错,但我似乎找到了所有答案,如何更新计算值的dom ......
我有这个组件:
Vue.component('bpmn-groups', {
props: ['groups', 'searchQuery'],
template: '#bpmn-groups',
computed: {
filteredGroups: function () {
var self = this;
return this.groups.filter(function(group) {
self.searchQuery = self.searchQuery || '';
return _.includes( group.name.toLowerCase(), self.searchQuery.toLowerCase() );
});
}
},
methods: {
clearFilter: function () {
this.searchQuery = '';
},
deleteGroup: function(group) {
Vue.http.delete('api/groups/'+group.id ).then(response => { // success callback
var index = this.groups.indexOf(group); // remove the deleted group
this.groups.splice(index, 1);
this.$forceUpdate(); // force update of the filtered list?
toastr.success('Schemų grupė <em>'+group.name+'</em> sėkmingai pašalinta.');
}, response => { // error callback
processErrors(response);
});
this.$forceUpdate();
},
},
});
在模板中我只有一个简单的v-for来通过filteredGroups:
<input v-model="searchQuery" type="text" placeholder="Search..." value="">
<div v-for="group in filteredGroups" class="item">...</div>
删除工作正常,它将其从groups属性中删除,但filteredGroups值仍然具有完整的组,直到我实际执行搜索或以某种方式触发其他内容...
如何修复它以便在更新组后更新filteredGroup?
答案 0 :(得分:4)
不要改变道具 - 它们不像数据定义的属性。有关更多信息,请参阅此处:
https://vuejs.org/v2/guide/components.html#One-Way-Data-Flow
相反,根据链接中的建议,声明一个从prop和mutate初始化的本地数据属性。