model.on('change',function())无法正常工作

时间:2013-10-08 05:38:58

标签: javascript backbone.js backbone-events backbone-model

我正在使用backboneJS model.on ('change:attribute',functionName(someParameter)) 来监听模型属性的更改并使用给定参数调用函数。但我面临的问题是,即使模型没有变化,也会初始调用函数。之后,即使模型发生变化,也不会调用该函数。我做了一些试验,发现没有参数,如果我打电话给 ('change:attribute',functionName) , 事件正常发射。我无法理解问题所在。任何人都可以提供帮助,因为我认为我在这里缺少一些非常基本并且非常感谢处理这种问题的方法。感谢。

1 个答案:

答案 0 :(得分:2)

.on()方法希望您传递将被调用以处理事件的回调函数或方法。但是在你的第一个例子中,你试图传递该回调的结果。

因此,内部会执行yourCallback.call(...)yourCallback.apply(...)。显然它无法执行非功能值的.call()方法。

但是你可以将方法调用包装在匿名函数中,但如果你真的需要它。例如,如果您需要使用someParameter值:

var MyView = Backbone.View.extend({
    // ...
    myMethod: function(someParameter) {
        this.model.on('change:attribute', function() {
            functionName(someParameter);
        });
    }
});