8

我的观点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想听整个集合的变化,只听集合包含的模型的单个属性。

我意识到有很多替代方案:

  1. 为每个模型创建视图aCollectionToRender并在这些视图中附加.on("change")事件。我不想这样做,因为我的情况不适合这样做
  2. 只需有一个this.collection.on("change")事件并根据我的要求使用事件处理程序过滤器。这不太优雅,如果 Backbone 已经允许我按照我上面的要求编写事件过滤器,这是重复的代码

我只是想知道是否有任何方法可以编写一个已经进行过滤的事件侦听器。这个问题也可能是重复的;我看了,但我没有找到完全一样的东西,但是,有很多 Backbone 问题

4

1 回答 1

18

也许我误解了你的问题,但你可以做你所展示的。查看Backbone 文档

MyView = Backbone.View.extend({
    initialize: function() {
       this.collection.on("change:attributeName", this.someAction /*function to call*/, this);
    },
    someAction: function(model, value, options){
    }
});
于 2013-02-05T20:41:53.440 回答