mounted: function() {
this.$watch('things', function(){console.log('a thing changed')}, true);
}
things
是一个对象数组 [{foo:1}, {foo:2}]
$watch
检测何时添加或删除对象,但不检测对象上的值何时更改。我怎样才能做到这一点?
原文由 Farzher 发布,翻译遵循 CC BY-SA 4.0 许可协议
mounted: function() {
this.$watch('things', function(){console.log('a thing changed')}, true);
}
things
是一个对象数组 [{foo:1}, {foo:2}]
$watch
检测何时添加或删除对象,但不检测对象上的值何时更改。我怎样才能做到这一点?
原文由 Farzher 发布,翻译遵循 CC BY-SA 4.0 许可协议
如果有人需要获取在数组中更改的项目,请检查它:
帖子示例代码:
new Vue({
...
watch: {
things: {
handler: function (val, oldVal) {
var vm = this;
val.filter( function( p, idx ) {
return Object.keys(p).some( function( prop ) {
var diff = p[prop] !== vm.clonethings[idx][prop];
if(diff) {
p.changed = true;
}
})
});
},
deep: true
}
},
...
})
原文由 Jonatan Machado 发布,翻译遵循 CC BY-SA 4.0 许可协议
5 回答4.9k 阅读✓ 已解决
4 回答3.2k 阅读✓ 已解决
2 回答4.8k 阅读✓ 已解决
4 回答4.4k 阅读✓ 已解决
4 回答1.9k 阅读✓ 已解决
2 回答2.6k 阅读✓ 已解决
2 回答2.6k 阅读✓ 已解决
您应该传递一个对象而不是布尔值作为
options
,所以:或者您可以将观察程序设置为
vue
实例,如下所示:[演示]