Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/backbone.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Backbone.js 将主干更改事件绑定到集合中模型的属性_Backbone.js_Backbone Events - Fatal编程技术网

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

Backbone.js 将主干更改事件绑定到集合中模型的属性,backbone.js,backbone-events,Backbone.js,Backbone Events,我有一个视图,它包含一个集合,如下所示: MyView = Backbone.View.extend({ initialize: function() { this.collection.on("change://an attribute of a model in aCollectionToRender", someAction); } }); var MyViewInstance = new MyView({ collection: aCollecti

我有一个视图,它包含一个
集合
,如下所示:

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
监听整个集合上的更改,只监听集合包含的模型的单个属性

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

  • 为每个型号的
    a集合创建视图,并在这些视图中附加
    .on(“更改”)
    事件。我不想这样做,因为这对我的处境不合适
  • 只要有一个
    this.collection.on(“change”)
    事件,并根据我的要求筛选事件处理程序即可。这就不那么优雅了,如果主干已经允许我按照上面的要求编写事件过滤器,那么这就是重复的代码

  • 我只是想知道是否有任何方法可以编写一个已经进行过滤的事件侦听器。这个问题也可能是重复的;我看了一下,但没有发现任何与此完全相同的内容,然而,有很多主干问题

    也许我误解了你的问题,但你可以完全按照你的表现去做。看看这本书


    啊!我想你是对的!出于某种原因,我认为当它是一个集合时,
    change:attributeName
    中的
    attributeName
    引用的是集合的一个属性,而不是模型。好的,但是你怎么做呢:this.collection.on(“change”,function(model,property){//获取此处更改的属性…})???
    MyView = Backbone.View.extend({
        initialize: function() {
           this.collection.on("change:attributeName", this.someAction /*function to call*/, this);
        },
        someAction: function(model, value, options){
        }
    });