我有一个案例,我无法继续前进,我将感谢你的帮助。在我的vue组件中,我有模型“foo”的属性aaa
and bbb
的观察者,如下所示:
watch: {
'foo.aaa': function () {
this.foo.bbb = null;
this.callRest();
},
'foo.bbb': function () {
this.callRest();
},
}
有多个选择输入和选择与模型foo.bbb
取决于选择与模型foo.aaa
所以我需要设置bbb
为null当aaa
改变。
现在我需要解决我修改foo
对象并从mixin的created
方法设置其属性的情况。在那种情况下,当我从mixin更改它时,我需要忽略观察者的因为它总是null bbb
属性。你能告诉我怎么解决吗?谢谢。
如何使用oldVal来确定观察者是否处于第一次特定的初始化状态。也许它看起来像这样......
'foo.aaa': function (newVal, oldVal) {
if(oldVal) {
// not in first specific initialization
this.foo.bbb = null;
this.callRest();
} else {
// in first specific initialization
}
},
希望我不会误解你的问题。
听起来你应该管理对象被操纵的状态。例如,创建一个名为editedFromMixin
的布尔数据值,默认为false
。
从mixin的created
方法更改值时,请将editedFromMixin
更新为true
。
然后,在你的观察者中,在将editedFromMixin
设置为foo.bbb
之前检查null
是否为假。最后,同样在你的mixin中,最后将editedFromMixin
翻回默认的false
。
效果是来自mixin的更改将设置阻止您的观察者进行不希望的更改的标志 - 但每次迭代更新只会发生一次。