如何防止主干模型事件传播到主干集合?
编辑:
假设我有如下内容,其中 CollectionView 包含 MyModels 的集合...
var CollectionView = Backbone.Collection.Extend({
initialize: function() {
this.collection.on("change", doStuff);
}
});
var ModelView = Backbone.View.Extend({
initialize: function() {
this.model = new MyModel();
this.model.on( "change", doStuff );
this.model.fetch();
}
});
如果在特殊情况下我不希望“更改”事件在获取完成后传播到集合,我想知道是否有任何方法可以阻止它。
谢谢
最佳答案
要防止模型触发更改事件:
model.set(attrs, {silent: true});
但这可能不是您想要的,因为这也会阻止触发模型的更改事件。
集合传递所有模型事件,但您可以做的是传递额外的选项,这些选项也将传递:
model.set(attrs, {dontBubble: true});
在您的 CollectionView 中:
var CollectionView = Backbone.View.extend({
this.initialize = function() {
this.collection.on('change', doStuff, this);
},
this.doStuff = function(model, collection, options) {
if (options.dontBubble) {
return;
}
// Do some stuff.
}
});
诚然,这有点难看,但这是解决问题的一种方式。
关于javascript - 如何防止 Backbone 模型向集合事件传播?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14901205/