主干更改事件在两个单独的值,互斥

时间:2013-07-01 20:29:33

标签: javascript backbone.js

我有一个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事情,我宁愿做一个通用的更改事件并做出相应的反应。这是我监控的唯一两个属性。

1 个答案:

答案 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();
    }

});