0

我有一个主干模型,它有两个属性,我正在监听一个变化。

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);

目的是避免复杂的代码,所以如果它涉及一堆骇人听闻的事情,我宁愿只做一个通用的更改事件并做出相应的反应。这是我正在监控的仅有的两个属性。

4

1 回答 1

0

也许匿名函数是可接受的解决方案?

this.model.on("change", function () {

    if (this.model.hasChanged('foo')) {
        this.doFoo();
    }
    if (this.model.hasChanged('bar') && !this.model.hasChanged('foo')) {
        this.doBar();
    }

});
于 2013-07-01T20:51:23.383 回答