我正在('change:attribute',functionName(someParameter))
上使用骨架JS model.on来侦听模型属性的变化,并使用给定参数调用函数。但是我面临的问题是,即使模型没有变化,该函数也会被初始调用。之后,即使模型更改,也不会调用该函数。我做了一些试验,发现没有参数,如果我叫('change:attribute',functionName)
,
事件已正确触发。我不明白是什么问题。任何人都可以帮忙,因为我认为我在这里缺少一些非常基本的东西。解决这一问题的方法将不胜感激。谢谢。
最佳答案
.on()
方法希望您传递将被调用以处理事件的回调函数或方法。但是在第一个示例中,您尝试传递该回调的结果。
因此在其内部将执行yourCallback.call(...)
或yourCallback.apply(...)
。显然,它无法执行非功能值的.call()
方法。
但是,如果确实需要,可以将方法调用包装在匿名函数中。例如,如果您需要使用该someParameter
值:
var MyView = Backbone.View.extend({
// ...
myMethod: function(someParameter) {
this.model.on('change:attribute', function() {
functionName(someParameter);
});
}
});