[英]How can I attach event handler for a collection view in Backbone.js when one of the models is changed?
[英]How does a Backbone.js View know when its collection has changed?
我有一個以集合為模型的骨干視圖。 如果將集合通過其構造函數傳遞,則可以在其Initialize函數中向該集合添加偵聽器,但是如何知道構造后何時設置其集合以便可以偵聽該集合中的事件呢?
我希望能夠在其生命周期中更改其集合,並根據新集合中的數據重新渲染它,但是似乎沒有辦法知道何時更改了它的集合? 有沒有可用的掛鈎?
[注意:下面是我的答案,其中包含基於斯圖史密斯答案的代碼]
我認為沒有自動知道的方法- collection
只是普通財產。
您總是可以提供一個setCollection
函數,該函數從舊集合(如果有)中取消綁定事件,分配該集合,然后重新綁定到新集合。
為了清楚起見,您還可以從initialize
調用此函數。
這是我基於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
},
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.