将Backbone更改事件绑定到集合中的模型属性

时间:2013-02-05 20:32:09

标签: backbone.js backbone-events

我的视图采用如下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已经允许我按照上面的要求编写事件过滤器,这是重复的代码
  3. 我只是想知道是否有任何方法可以编写已经进行过滤的事件监听器。这个问题也可能是重复的;我看了但是我没有发现任何类似的东西,但是,有很多Backbone问题

1 个答案:

答案 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){
    }
});