手动触发 change:attribute
Manually trigger change:attribute
我有一个模型 cell
,其属性为 foo
。
我有一个绑定到 "change:foo"
的侦听器,如下所示:
cell.listenTo(cell, "change:foo", function(){
if(cell.foo == "bar"){
doSomething()
}
});
现在,由于侦听器绑定在 foo
可能已经是 "bar"
的时间点,我想手动触发 change:foo
以便代码 运行,监听器绑定后。由于我的应用程序的限制,我无法提前绑定侦听器。
我发现了一个 Backbone.js 作弊 sheet,它声称我可以使用 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');
我有一个模型 cell
,其属性为 foo
。
我有一个绑定到 "change:foo"
的侦听器,如下所示:
cell.listenTo(cell, "change:foo", function(){
if(cell.foo == "bar"){
doSomething()
}
});
现在,由于侦听器绑定在 foo
可能已经是 "bar"
的时间点,我想手动触发 change:foo
以便代码 运行,监听器绑定后。由于我的应用程序的限制,我无法提前绑定侦听器。
我发现了一个 Backbone.js 作弊 sheet,它声称我可以使用 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');