2013-03-08 74 views
1

我試圖摧毀一個視圖/解除所有事件時,不再需要視圖。我要做的就是:backbone.js視圖事件不被破壞

view.$el.removeData().unbind(); 
view.undelegateEvents(); 
view.remove(); 

的觀點被破壞了,我不能再看到DOM相關的元素,但事件似乎堅持。我正在使用Chrome開發人員工具並檢查內存使用情況,我發現每次渲染視圖並將其銷燬時,事件偵聽器都會增加一個。

我試圖輸出視圖事件做:

this.$el.data("events"); 

,但是這給了我不確定。

有什麼想法?

謝謝。

+0

請問您查看包含孩子的意見?你應該解除綁定/刪除它們 – jviotti 2013-04-05 20:44:13

回答

2

這個優秀的文章介紹如何防止內存泄漏在骨幹:http://andrewhenderson.me/tutorial/how-to-detect-backbone-memory-leaks/

他完成常規摧毀一個觀點是這樣的:

this.unbind(); // Unbind all local event bindings 
this.model.unbind('change', this.render, this); // Unbind reference to the model 
this.options.parent.unbind('close:all', this.close, this); // Unbind reference to the parent view 

this.remove(); // Remove view from DOM 

delete this.$el; // Delete the jQuery wrapped object variable 
delete this.el; // Delete the variable reference to this node