我在指令的控制器中声明了$scope.$watch
。当我更改页面并删除指令时,我是否必须手动销毁方式?如果是这样,我如何检测指令何时被删除?
答案 0 :(得分:21)
这取决于范围,而不是指令。如果范围被破坏,那么它的所有美元观察者都会死掉它。在页面更改时,您的范围将被角度破坏,因此您应该是安全的。
当范围死亡时,会产生$ destroy事件。你可以看一下:
$scope.$on('$destroy', callback);
你可以通过调用它返回的函数手动从范围中分离$ watchers:
var sentinel = $scope.$watch('expression', callback);
sentinel(); // kill sentinel
您也可以使用$。