2

我有一个集合作为其模型的Backbone视图。如果通过构造函数传入集合,它可以在其初始化函数中将集合添加到集合中,但是如何知道集合是在构造之后设置的,以便它可以侦听集合中的事件?Backbone.js视图如何知道它的集合何时更改?

我希望能够在其生命周期中更改其集合,并根据新集合中的数据重新呈现它,但似乎无法知道其集合何时发生更改?有没有可用的钩子?

: - collection只是一个普通的财产

回答

1

我不认为有任何自动的方式来了解[注基于stusmith的回答,请参见下面的代码我的回答。

您可以始终提供一个函数setCollection,该函数取消绑定旧集合中的事件(如果有),分配集合并重新绑定到新集合。

为了清楚起见,您还可以从initialize中调用此函数。

+0

感谢。我已经在下面发布了这个答案的代码。 – Undistraction 2012-03-30 09:35:16

0

这是基于stusmith的回答我的解决方案:

initialize: function(){ 
    if(this.collection){ 
       this.addCollectionListeners(); 
     } 
}, 

setCollection:function(collection){ 
    if(collection != this.collection){ 
     if(this.collection){ 
      this.removeCollectionListeners(); 
     } 
     this.collection = collection; 
     this.addCollectionListeners(); 
    } 
}, 

removeCollectionListeners:function(){ 
    //Remove listeners 
}, 


addCollectionListeners:function(){ 
    //Add listeners 
},