1

当不再需要视图时,我正在尝试销毁视图/取消绑定所有事件。我要做的是:

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

视图被破坏了,我再也看不到 DOM 中的关联元素,但事件似乎仍然存在。我正在使用 Chrome 开发人员工具并检查内存使用情况,我发现每次渲染视图然后销毁它时,事件侦听器都会增加一个。

我尝试通过执行以下操作来输出视图事件:

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

但这给了我不确定性。

有什么想法吗?

谢谢你。

4

1 回答 1

2

这篇优秀的文章描述了如何防止 Backbone 中的内存泄漏: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
于 2013-04-05T20:49:03.980 回答