手动触发更改:属性

时间:2015-08-14 08:48:30

标签: javascript backbone.js

我有一个带有cell属性的模型foo。 我有一个像"change:foo"这样的监听器:

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

现在,由于侦听器在foo可能已经"bar"的某个时间点被绑定,我想手动触发change:foo以便代码运行,之后听众受到约束。由于我的应用程序的限制,我无法提前绑定侦听器。

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

可以改变我的倾听者,而不是"change"而不是"change:foo",但如果可能的话,我会坚持{ {1}}出于性能原因。

1 个答案:

答案 0 :(得分:1)

您可以将任意字符串传递给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/