有没有办法检测AngularJS中的指令破坏?
我想在AngularJS中的指令中使用$timeout。但是我在指令文档中找不到一种方法来检测它何时被销毁,以防它发生在超时结束之前,我需要清理超时有没有办法检测AngularJS中的指令破坏?,angularjs,angularjs-directive,Angularjs,Angularjs Directive,我想在AngularJS中的指令中使用$timeout。但是我在指令文档中找不到一种方法来检测它何时被销毁,以防它发生在超时结束之前,我需要清理超时 是否有一个我可以绑定到的事件或一些内置函数(类似于控制器的$destroy)可以用来检测我的指令何时被销毁?还是我缺少了指令的一个基本概念?您提到的$destroy事件也可以在指令中使用: app.directive('myDirective', function() { return { link: function(scope) {
是否有一个我可以绑定到的事件或一些内置函数(类似于控制器的$destroy)可以用来检测我的指令何时被销毁?还是我缺少了指令的一个基本概念?您提到的
$destroy
事件也可以在指令中使用:
app.directive('myDirective', function() {
return {
link: function(scope) {
scope.$on('$destroy', function() {
// Clean up
});
}
};
});
请务必注意,
$destroy
事件与作用域相关,而不是与控制器或指令相关。谢谢!我完全忘记了指令的作用域。@Blackhole我试图想出一种方法,可以在指令仍在页面中的情况下触发$destroy
,或者在未触发$destroy
的情况下从页面中删除该指令。除非手动修补DOM,否则我想不出一个。你说得对。这只是一个注释,帮助OP理解代码示例中发生的事情;)。请注意,如果您的指令或同一元素上的另一个指令都没有请求新的作用域(独立或非独立),那么所涉及的作用域将属于该元素的一个祖先,这意味着该指令本身可能会被销毁,而作用域将继续存在,并且永远不会通知您的指令。