Angularjs指令删除手表?

时间:2013-06-06 07:20:35

标签: javascript angularjs angularjs-directive

我在指令的控制器中声明了$scope.$watch。当我更改页面并删除指令时,我是否必须手动销毁方式?如果是这样,我如何检测指令何时被删除?

1 个答案:

答案 0 :(得分:21)

这取决于范围,而不是指令。如果范围被破坏,那么它的所有美元观察者都会死掉它。在页面更改时,您的范围将被角度破坏,因此您应该是安全的。

当范围死亡时,会产生$ destroy事件。你可以看一下:

$scope.$on('$destroy', callback);

你可以通过调用它返回的函数手动从范围中分离$ watchers:

var sentinel = $scope.$watch('expression', callback);
sentinel(); // kill sentinel

您也可以使用$。