我有一个模型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');
关于javascript - 手动触发更改:attribute,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32005959/