建议始终挂在$ on方法上,如
var dereg = $scope.$on(...)
以后
$scope.$on("$destroy", function() { dereg(); });
或者仅在某些情况下才需要它? $ watch
的相同问题答案 0 :(得分:2)
AFAIK,当您的应用可能存在内存泄漏问题或僵尸事件时,您应该只使用$destroy
事件。
$destroy
非常有用,并且在删除元素之后,你想要从引用中删除它。
例如,当您的指令在全局$destory
元素上创建事件处理程序并且删除了带有该指令的元素时,您可能希望使用DOM
。
让我们说这是指令中的链接函数:
function myEventListener(){console.log('scroll!');}
$window.bind('mousewheel',myEventListener);
scope.$on('$destroy',function(){$window.unbind(myEventListener)});
如果你没有取消绑定你的事件监听器,那么在删除带有指令的元素之后,滚动时你仍会收到scroll!
条消息。