我正在('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);
        });
    }
});

09-19 16:54