我$scope.$watch
在指令的控制器中声明了一个。当我更改页面并删除指令时,我是否必须手动销毁路径?如果是这样,我如何检测指令何时被删除?
问问题
10626 次
1 回答
21
它取决于范围,而不是指令。如果作用域被销毁,那么它的所有 $watchers 都会随之死亡。在页面更改时,您的范围会被角度破坏,因此您应该是安全的。
当作用域死亡时,它会产生一个 $destroy 事件。你可以观看它:
$scope.$on('$destroy', callback);
您可以通过调用它返回的函数手动将 $watchers 从范围中分离出来:
var sentinel = $scope.$watch('expression', callback);
sentinel(); // kill sentinel
你也可以用 $on 来做到这一点。
于 2013-06-06T08:57:51.093 回答