0

我正在使用backboneJS model.on('change:attribute',functionName(someParameter))来监听模型属性的变化并调用具有给定参数的函数。但我面临的问题是,即使模型没有变化,最初也会调用该函数。之后,即使模型发生变化,也不会调用该函数。我做了一些试验,发现如果没有参数,如果我调用('change:attribute',functionName),事件会正确触发。我不明白问题是什么。任何人都可以帮忙,因为我认为我在这里遗漏了一些非常基本的东西。解决此类问题的方法将不胜感激。谢谢。

4

1 回答 1

2

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

所以里面会执行yourCallback.call(...)or yourCallback.apply(...)。显然它不能执行.call()非函数值的方法。

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

var MyView = Backbone.View.extend({
    // ...
    myMethod: function(someParameter) {
        this.model.on('change:attribute', function() {
            functionName(someParameter);
        });
    }
});
于 2013-10-08T05:45:24.097 回答