1

是否建议始终使用 $on 方法,如

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

然后

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

还是仅在某些情况下才需要?$watch 的同样问题

4

1 回答 1

2

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

$destroy当您将某些指令的变量传递给另一个指令或控制器时很有用,并且在元素被删除后,您想将其从引用中删除。

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

假设这是指令中的链接函数:

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

如果您不取消绑定事件侦听器,则在删除带有指令的元素后,scroll!滚动时您仍然会收到消息。

于 2013-04-26T22:59:15.617 回答