我有一个带有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}}出于性能原因。
答案 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');