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