我的视图采用如下collection
:
MyView = Backbone.View.extend({
initialize: function() {
this.collection.on("change://an attribute of a model in aCollectionToRender", someAction);
}
});
var MyViewInstance = new MyView({
collection: aCollectionToRender
});
基本上,我不希望MyView
监听整个集合的更改,只需要集合中包含的模型的单个属性。
我意识到有很多替代方案:
aCollectionToRender
的每个模型创建视图,并在这些视图中附加.on("change")
个事件。我不想这样做,因为对我的情况来说这不是正确的事情this.collection.on("change")
事件,并根据我的要求过滤事件处理程序。这不太优雅,如果Backbone已经允许我按照上面的要求编写事件过滤器,这是重复的代码我只是想知道是否有任何方法可以编写已经进行过滤的事件监听器。这个问题也可能是重复的;我看了但是我没有发现任何类似的东西,但是,有很多Backbone问题
答案 0 :(得分:18)
也许我误解了你的问题,但你可以完全按照你所展示的那样做。查看Backbone documentation。
MyView = Backbone.View.extend({
initialize: function() {
this.collection.on("change:attributeName", this.someAction /*function to call*/, this);
},
someAction: function(model, value, options){
}
});