javascript - 手动触发更改:attribute

标签 javascript backbone.js

我有一个模型cell,其属性为foo。 我有一个绑定(bind)到 "change:foo" 的监听器,如下所示:

cell.listenTo(cell, "change:foo", function(){ 
  if(cell.foo == "bar"){
    doSomething()
  }
});

现在,由于监听器是在 foo 可能已经是 "bar" 的时间点绑定(bind)的,所以我想手动触发 change:foo 以便在绑定(bind)监听器后运行代码。由于应用程序的限制,我无法提前绑定(bind)监听器。

我发现了一个 Backbone.js 备忘单,声称我可以使用 cell.change() 来触发模型的每个属性的 change:attribute,但是那只是产生Uncaught TypeError: cell.change is not a function。我知道我可以通过调用 cell.trigger("change") 来触发更改事件,但这不会触发 change:foo

可以更改我的监听器以监听“change”而不是“change:foo”,但如果可能的话我'出于性能原因,我希望坚持使用 "change:foo"

最佳答案

您可以将任意字符串传递给 trigger ,最值得注意的是您想要的事件,change:foo

尝试

var cell = new Backbone.Model({
    foo: 'bar'
});
cell.on('change:foo', function() {
    console.log('foo changed', cell.get('foo'));
});
cell.trigger('change:foo');

还有一个演示 http://jsfiddle.net/nikoshr/tk33rme2/

关于javascript - 手动触发更改:attribute,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32005959/

相关文章:

backbone.js - 主干 View 属性哈希未更新

javascript - Greasemonkey 脚本替换 href

javascript - Highcharts 中的数据标签位于容器外部/未显示

php - 将客户端设备时钟与服务器时钟进行精确到毫秒的比较

javascript - 如何在 Highcharts 中鼠标悬停时显示数据标签?

javascript - 当 mailto : or tel: links are clicked 时触发 INSERT 查询

javascript - Thorax.js Collection View 不渲染模型属性

backbone.js - 将一个大型外部文件用于许多带有 backbone.js 的 javascript 模板?

backbone.js - View 之间的事件处理

javascript - Backbone 中集合/有序集的数据结构是什么?