2011-06-28 36 views
0

使用backbone.js時,調用集合的remove method時會激發「remove」事件。backbone.js將額外數據與事件一起傳遞

  1. 如何延長這個「刪除」事件傳遞額外的數據,如特定模型的某些屬性被刪除?

  2. 如何綁定到由id或cid指定的特定模型觸發的「remove」事件?

我想任何解決方案也適用於「更改」事件?感謝幫助。

+0

你基本上有一堆視圖綁定到集合中的模型嗎?如果是這樣,那麼我想你會從集合中提取每個模型到它的視圖中,並且在那個視圖中,你將綁定到「刪除」事件。 –

+0

@Bill謝謝我想知道是否可以隨意綁定到更改或通過cid刪除事件。例如'.bind(「c4change」,function(){})'其中c4是cid。 – fortuneRice

回答

2

如果您要從集合中刪除模型,則不再需要該模型。我想我錯過了擴展刪除的重點,不僅僅是刪除一些東西。

當您調用集合上的remove時,將集合中的模型或模型數組傳遞給remove函數。我會建議在您調用集合中的remove函數之前,使用這些模型進行任何最後一分鐘的工作。此時,您應該擁有您計劃移除的所有模型及其屬性。

綁定到你只需要得到你從集合並綁定到想要的模型特定模型的變化事件:

var myModel = myCollection.get(id); //using the id of the model 

var myModel = myCollection.getByCid(cid); //using the cid of the model 

現在綁定到型號:

myModel.bind("change", function() { 
    //do something 
}); 

,或者綁定更改爲集合中的所有型號:

myCollection.bind("change", function(model) { 
    //do something, model is the model that triggered the change event 
}); 
+0

感謝@ryanmarc的迴應。我在頁面上還有其他元素引用要刪除的模型,所以我希望該模型通知其他元素,以便他們可以重新引用它並執行其他一些處理。我想這可以在刪除之前完成,就像你說的那樣,但是我想知道將這些模型的屬性與remove事件本身一起傳遞是否更清晰或更高效,因爲事件被稱爲反正。 – fortuneRice

+0

對我來說,看起來好像做得更清楚一些,並且將模型傳遞給單獨的remove方法的適當位置,而不是將remove擴展到更多。但是,如果您想覆蓋remove函數將其從骨幹源(在集合下)複製並粘貼到擴展集合的位置。當你在該集合上調用remove時,它將使用你的函數而不是骨幹源中的函數。 – ryanmarc

相關問題