我有一个Backbone模型,其中包含两个我正在收听更改的属性。
this.model.on("change:foo", this.doFoo, this);
this.model.on("change:bar", this.doBar, this);
然而,有时候foo和bar都会在同一时刻发生变化。如果改变了foo,是否可以取消事件,这样如果foo和bar都改变了,我只执行doFoo?
我知道我可以使用一般的更改事件来检查更改,但我希望能有更多的东西。
this.model.on("change", this.doFooOrBar, this);
目的是避免令人费解的代码,所以如果它涉及一堆hacky事情,我宁愿做一个通用的更改事件并做出相应的反应。这是我监控的唯一两个属性。
答案 0 :(得分:0)
也许匿名函数是可以接受的解决方案?
this.model.on("change", function () {
if (this.model.hasChanged('foo')) {
this.doFoo();
}
if (this.model.hasChanged('bar') && !this.model.hasChanged('foo')) {
this.doBar();
}
});