什么时候需要使用$ on和$ watch方法返回的注销函数?

时间:2013-04-26 20:20:05

标签: angularjs

建议始终挂在$ on方法上,如

var dereg = $scope.$on(...)

以后

$scope.$on("$destroy", function() { dereg(); });

或者仅在某些情况下才需要它? $ watch

的相同问题

1 个答案:

答案 0 :(得分:2)

AFAIK,当您的应用可能存在内存泄漏问题或僵尸事件时,您应该只使用$destroy事件。

将某些指令的变量传递给另一个指令或控制器时,

$destroy非常有用,并且在删除元素之后,你想要从引用中删除它。

例如,当您的指令在全局$destory元素上创建事件处理程序并且删除了带有该指令的元素时,您可能希望使用DOM

让我们说这是指令中的链接函数:

function myEventListener(){console.log('scroll!');}
$window.bind('mousewheel',myEventListener);
scope.$on('$destroy',function(){$window.unbind(myEventListener)});

如果你没有取消绑定你的事件监听器,那么在删除带有指令的元素之后,滚动时你仍会收到scroll!条消息。