我在指令的 Controller 中声明了一个 $scope.$watch
。当我更改页面并删除指令时,我是否必须手动销毁方式?如果是这样,我如何检测指令何时被删除?
最佳答案
这取决于作用域,而不是指令。如果作用域被销毁,那么它的所有 $watchers 都会随之消亡。在页面更改时,您的范围将被 Angular 破坏,因此您应该是安全的。
当作用域死亡时,它会产生一个 $destroy 事件。你可以观看它:
$scope.$on('$destroy', callback);
并且您可以通过调用它返回的函数手动将 $watchers 从作用域中分离出来:
var sentinel = $scope.$watch('expression', callback);
sentinel(); // kill sentinel
你也可以用 $on 来做到这一点。
关于javascript - Angularjs 指令删除监视?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16956004/