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

Jay*_*Jay 8 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
});
Run Code Online (Sandbox Code Playgroud)

基本上,我不想MyView监听整个集合的更改,只需要集合中包含的模型的单个属性.

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

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

我只是想知道是否有任何方法来编写已经进行过滤的事件监听器.这个问题也可能是重复的; 我看了但是我没有发现任何类似的东西,但是,有很多Backbone问题

Pau*_*cke 18

也许我误解了你的问题,但你可以完全按照自己的表现来做.查看Backbone文档.

MyView = Backbone.View.extend({
    initialize: function() {
       this.collection.on("change:attributeName", this.someAction /*function to call*/, this);
    },
    someAction: function(model, value, options){
    }
});
Run Code Online (Sandbox Code Playgroud)

  • 卫生署!我觉得你是对的!出于某种原因,我认为当它是一个集合时,`change:attributeName`中的`attributeName`指的是集合的属性,而不是模型. (2认同)