2014-02-26 16 views
0

在我的項目中關閉CollectionView後,它引用的集合仍然可用。 CollectionView在重新載入數據時再次打開CollectionView。我覺得這是預期的行爲作爲documentation它說,所有的CollectionView不上接近的是:在關閉Backbone.Marionette中的CollectionView時刪除集合

  1. 解除綁定所有listenTo事件
  2. 解除綁定所有的自定義視圖事件
  3. 解除綁定所有的DOM事件
  4. 解除綁定這是渲染
  5. 刪除this.el從DOM
  6. 呼叫視圖onClose事件會,如果提供一個所有項目的意見

我猜這是關於我在onClose事件處理程序上管理集合。是否有刪除與視圖相關的集合和模型的好方法?

回答

2

在你的情況下,沒有必要刪除集合。變量(在這種情況下是你的集合)不會被另一個對象直接引用,將被JavaScript垃圾回收。因此,當視圖和模塊關閉,沒有別的引用集合時,它將被刪除。

如果你想絕對保證你不會得到你可以清除它的事件監聽器,當你關閉模塊和/或查看任何殭屍事件:

myCollection.off(); 

當然是你的收藏是一個全球性的變量(技術上窗口對象的屬性),那麼是的,它可能會刪除它像這樣一個好主意:

delete window.myCollection; 
從這個

除此之外,從內存中刪除它是不是你需要擔心的其他東西引用的對象被關閉...

+0

感謝您的回答。我想我沒有很好地解釋自己。該視圖與按需加載和卸載的子模塊相關聯,但我不能認爲數據將再次需要。所以當我卸載模塊時,我刪除了視圖,我想也刪除與它關聯的集合和模型。爲了移除模塊和視圖,我只是將其正在使用的區域替換爲另一個模塊,視圖正確關閉,但集合保留在內存中。 – JayC

+0

好吧,我想我現在明白你了 - 我會更新我的答案,但是在我做之前我確實明白:除了模塊和引用你想要刪除的集合的視圖之外,還有其他的東西嗎? –

+0

謝謝!我認爲模塊和視圖都被刪除了,所以從內存中刪除的唯一剩餘部分是集合及其模型。 – JayC