2012-01-14 47 views
0

我在backbone.js中遇到了一個問題collection.add在視圖中使用initialize();在我的應用程序中,當您更改部分時,我刪除了我的視圖,但我並未刪除該部分中使用的集合(集合在應用程序加載時初始化爲空)。長壽backbone.js與重複添加事件的集合錯誤

如果有人回來我的部分我使用相同的集合,並初始化this.collection.add()就可以了。然而,作爲副作用,集合現在在我的新視圖中添加2倍的模型,是否有辦法阻止這種行爲?

事件陌生人它只是Firefox發生..而且,這雙collection.add是沒有意義的,因爲我清楚地看到,它的不一樣的視角數量(即使是來自同一個變量。)

+0

您能否提供您的代碼示例 – Paul 2012-01-14 20:09:31

回答

1

當您更改視圖時,您必須手動解除綁定事件偵聽器 - 否則事件偵聽器將保留對內存中已刪除視圖的引用,並且它們將永遠不會被垃圾收集。從長遠來看,隨着您的應用程序開始佔用資源,它可能會導致大量內存泄漏和整個系統速度下降。

目前在Backbone中沒有內置解決方案,因此您必須自己處理它。

專業提示:)

比如,你可以聆聽觀點和路線的變化,如果路由變化,然後調用「的onDestroy」的方法,可清理所有引用

另一種選擇是 - 而不是刪除視圖 - 使用jquery detach方法不會清理所有jquery dom /自定義事件並多次重複使用相同的視圖