javascript - model.on ('change' 、 function()) 无法正常工作

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

我正在使用backboneJS model.on ('change:attribute',functionName(someParameter)) 来监听模型属性的变化并调用给定参数的函数。但我面临的问题是,即使模型没有变化,该函数也会被最初调用。之后,即使模型发生变化,该函数也不会被调用。我做了一些试验,发现没有参数,如果我调用 ('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);
        });
    }
});

关于javascript - model.on ('change' 、 function()) 无法正常工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19239891/

相关文章:

javascript - 重新加载/播放 swiffer 容器

javascript - 在 underScore.js 中创建多个 _.templateSettings

javascript - Backbone.js 实用程序

javascript - Backbone : How to update a collection view when collection changes?

javascript - 当 DOM 树发生变化时更新事件处理程序

javascript - 使用按钮滚动 slider

javascript - 我需要在输入时为数字添加逗号运算符并限制 2 个小数位

javascript - 如何在柯里化(Currying)函数中将 Array.prototype 方法作为参数传递

Backbone.js - 在 View 中过滤和显示集合数据的正确方法

javascript - 为什么主干 View 检测不到模型更改?