javascript - Angularjs 指令删除监视?

标签 javascript angularjs angularjs-directive

我在指令的 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/

相关文章:

AngularJs - 从指令调用 Controller 函数

javascript - 在 Node 中强制进行垃圾收集以测试 WeakRef 和 FinalizationRegistry

javascript - 循环中的动态变量名

javascript - AngularJS:使用 ng-readonly 只读输入

angularjs - 为什么我必须在这里调用 $scope.$digest() ?

javascript - 如何在指令中获取 ng-class 值

javascript - 我该如何翻译handsontable的日期选择器?

javascript - Jquery:弹出选择 div 的最佳方式

javascript - 电子邮件黑名单和验证

javascript - 如何将 Angular.js 与 Pusher 或 PubNub 等实时消息服务集成?