我有一個在backboneJS中構建的測驗應用程序,我有三個視圖。 QuizView顯示整體進度和後退/下一個按鈕。包含一組問題和每個問題的QuestionView的PageView。刪除骨幹視圖但DOM節點數不斷增加?
當用戶轉到測驗的下一頁時,我通過調用一個調用Backbone的remove()函數的頁面本身和所有問題來刪除當前的PageView。 (所有聽衆都附帶listenTo)
這是我的期望,在我這樣做後,DOM節點不應該再反映在內存時間軸上。我附加了Chrome開發工具中DOM節點數的視圖,您可以看到它隨着您進入新頁面而增加。
我也拍了堆快照,當我查看分離的DOM項目時,它們都有一個項目(頁面的div容器),在保留樹中有一個項目。我假設這就是爲什麼他們沒有被收集。
任何人都可以提供洞察,爲什麼DOM節點數不斷增加?
而且這是我破壞功能瀏覽量:
destroy: function(){
console.log("PageView :: destroy " + this)
_.each(this.childViews, function(view){
view.remove();
});
this.remove();
}
這是有道理的,但是在我的「上」或「觸發」任何事件的情況下我不會用,所以我覺得默認的刪除功能應該是足夠的。 – smurfarita 2013-05-12 20:42:58
如果你有任何listenTo在你的視圖/集合/模型中,最好選擇'this.model.off(null,null,this)'或'this.collection.off(null,null,this)' – Muhaimin 2014-03-03 14:35:57