0

我有无法继续前进的用例,我将感谢您的帮助。在我的 vue 组件中,我有模型“foo”属性的观察者aaabbb如下所示:

watch: {
   'foo.aaa': function () {
       this.foo.bbb = null;
       this.callRest();
    },
   'foo.bbb': function () {
       this.callRest();
    },
}

有多个选择输入,选择模型foo.bbb取决于选择模型foo.aaa,所以我需要在更改bbb时设置为 null aaa

现在我需要解决我修改对象并从 mixin 的方法foo设置其属性的情况。created在那种情况下,当我从 mixin 更改它时,我需要忽略观察者,因为它始终为 nullbbb属性。你能告诉我如何解决吗?谢谢你。

4

2 回答 2

1

How about using oldVal to determine whether the watcher is in the first specific initialization or not. Maybe it will look like this...

'foo.aaa': function (newVal, oldVal) {
   if(oldVal) {
     // not in first specific initialization 
     this.foo.bbb = null;
     this.callRest();
   } else {
     // in first specific initialization 
   }
},

Hopefully, I don't misunderstood your question.

于 2019-03-17T14:56:49.533 回答
0

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

createdmixin 的方法更改值时,更新editedFromMixintrue.

然后,在您的观察者中,在设置为editedFromMixin之前检查是否为假。最后,同样在你的 mixin 中,最后返回到 default 。foo.bbbnulleditedFromMixinfalse

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

于 2019-03-17T15:06:41.020 回答