2012-05-07 72 views
13

什麼是刪除模型客戶端的最佳方式?我不需要擔心在服務器端刪除它。我如何確保它在任何地方都被移除,避免每個陷阱,每個殭屍的綁定。我正在尋找一個指導,以消除和摧毀一切,並確保模型是垃圾收集。如何刪除骨幹模型客戶端?

謝謝!

+0

可能的重複http://stackoverflow.com/questions/10400630/remove-a-backbone-model-by-id –

+0

從哪裏去?一個集合?該文件?瀏覽器的內存? – JMM

+0

@JMM是無處不在,避免每一個陷阱,每一個殭屍綁定。我正在尋找一個完整的指南去除和摧毀一切,並確保模型是垃圾收集。 – fancy

回答

11

這真的取決於這個模型裏面的東西。如果綁定到來自其他實例的事件 - 視圖/集合/模型,則應手動刪除這些事件偵聽器,因爲無法一次刪除所有事件偵聽器。

此外,Model.destroy()移除在集合模型(骨幹文件):

摧毀model.destroy([選項])

...觸發 「消滅」 事件在模型上,這將通過任何包含它的集合冒泡...

您可能想要做的事情是指定一個新的銷燬方法,其中包括事件觸發和要刪除的內容。

destroy: function(options) { 
    // Any events you wish to switch off (if you have any) 
    SomeCollection.off('change', this.changeFn); 

    Backbone.Model.prototype.destroy.apply(this, options);  
} 

可能是你也應該知道一些圖案的製作更小的垃圾從型號:

  1. 不要將初始化模型的變量(保持在集合中);
  2. 請確保您編寫的代碼不會從模型中綁定事件(使用視圖/集合);
  3. 保持您的模型代碼簡單,因爲您的應用中的模型將被編號最多。

我認爲通過遵循這些規則,您不需要太擔心模型中的垃圾。