我有一个Backbone View,它有一个Collection作为它的模型。如果集合通过其构造函数传入,它可以在其初始化函数中向集合添加侦听器,但是如何知道它的集合何时在构造之后设置,以便它可以侦听集合中的事件?
我希望能够在其生命周期中更改其集合并根据新集合中的数据重新渲染它,但似乎没有办法知道它的集合何时发生了变化?有没有挂钩?
[注意:请参阅下面的答案,代码基于stusmith的回答]
答案 0 :(得分:1)
我认为没有任何自动方式可以知道 - collection
只是一个普通的财产。
您总是可以提供一个函数setCollection
,它取消绑定旧集合中的事件(如果有的话),分配集合,然后重新绑定到新集合。
为清楚起见,您还可以从initialize
调用此函数。
答案 1 :(得分: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
},