Vue - 在第一次特定初始化时忽略观察者

问题描述 投票:0回答:2

我有一个案例,我无法继续前进,我将感谢你的帮助。在我的vue组件中,我有模型“foo”的属性aaaand 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属性。你能告诉我怎么解决吗?谢谢。

javascript vue.js vuejs2 vue-component vue-mixin
2个回答
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 
   }
},

希望我不会误解你的问题。


0
投票

听起来你应该管理对象被操纵的状态。例如,创建一个名为editedFromMixin的布尔数据值,默认为false

从mixin的created方法更改值时,请将editedFromMixin更新为true

然后,在你的观察者中,在将editedFromMixin设置为foo.bbb之前检查null是否为假。最后,同样在你的mixin中,最后将editedFromMixin翻回默认的false

效果是来自mixin的更改将设置阻止您的观察者进行不希望的更改的标志 - 但每次迭代更新只会发生一次。

© www.soinside.com 2019 - 2024. All rights reserved.