当角度开始破坏时,我们是否需要在指令中取消绑定事件监听器?

时间:2013-07-25 10:18:07

标签: jquery angularjs memory-leaks event-listener

我的应用程序中存在大量内存泄漏但我没有找到原因,这是背景。

  • 我使用的是AngularJS + JQuery(插件)
  • 许多听众的约束如下:

    $(element).on(“keyup”,function(){});

所以问题是

我是否需要通过以下方式取消绑定指令中的侦听器?

scope.$on("$destroy", function() {
    $(element).off();
}); 
顺便说一句,你如何找到Web应用程序中的内存泄漏? 我使用chrome的个人资料(见Profiling memory performance) 但我无法追溯内存泄漏的代码。你有什么建议吗?

非常感谢!

2 个答案:

答案 0 :(得分:14)

范围销毁的Angular文档意味着您确实需要删除DOM事件。

http://docs.angularjs.org/api/ng.$rootScope.Scope#$destroy

  

请注意,在AngularJS中,还有一个$ destroy jQuery事件   可以在删除元素之前用于清理DOM绑定   DOM。

答案 1 :(得分:4)

我必须不同意接受的答案,你的内存泄漏可能有其他原因。

请查看此优惠答案:AngularJS - Does $destroy remove event listeners?