Vue - 在第一次特定初始化时忽略观察者
Vue - ignore watcher in first specific initialization
我有无法继续的用例,非常感谢您的帮助。在我的 vue 组件中,我有模型 "foo" 的属性 aaa
和 bbb
的观察者,如下所示:
watch: {
'foo.aaa': function () {
this.foo.bbb = null;
this.callRest();
},
'foo.bbb': function () {
this.callRest();
},
}
有多个 select 输入和 select 模型 foo.bbb
取决于 select 模型 foo.aaa
所以我需要设置 bbb
当 aaa
更改时为 null。
现在我需要解决修改 foo
对象并通过 mixin 的 created
方法设置其属性的情况。在那种情况下,当我从 mixin 更改它时,我需要忽略 watcher,因为它总是 null bbb
属性。你能告诉我如何解决吗?谢谢。
如何使用oldVal 来确定watcher 是否处于第一个特定的初始化中。也许它看起来像这样...
'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
。
然后,在您的观察者中,在将 foo.bbb
设置为 null
之前检查 editedFromMixin
是否为假。最后,同样在你的 mixin 中,结束时将 editedFromMixin
翻转回默认的 false
.
效果是来自 mixin 的更改将设置标志以防止您的观察者进行不需要的更改 – 但每次更新迭代仅一次。
我有无法继续的用例,非常感谢您的帮助。在我的 vue 组件中,我有模型 "foo" 的属性 aaa
和 bbb
的观察者,如下所示:
watch: {
'foo.aaa': function () {
this.foo.bbb = null;
this.callRest();
},
'foo.bbb': function () {
this.callRest();
},
}
有多个 select 输入和 select 模型 foo.bbb
取决于 select 模型 foo.aaa
所以我需要设置 bbb
当 aaa
更改时为 null。
现在我需要解决修改 foo
对象并通过 mixin 的 created
方法设置其属性的情况。在那种情况下,当我从 mixin 更改它时,我需要忽略 watcher,因为它总是 null bbb
属性。你能告诉我如何解决吗?谢谢。
如何使用oldVal 来确定watcher 是否处于第一个特定的初始化中。也许它看起来像这样...
'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
。
然后,在您的观察者中,在将 foo.bbb
设置为 null
之前检查 editedFromMixin
是否为假。最后,同样在你的 mixin 中,结束时将 editedFromMixin
翻转回默认的 false
.
效果是来自 mixin 的更改将设置标志以防止您的观察者进行不需要的更改 – 但每次更新迭代仅一次。