Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
有没有办法检测AngularJS中的指令破坏?_Angularjs_Angularjs Directive - Fatal编程技术网

有没有办法检测AngularJS中的指令破坏?

有没有办法检测AngularJS中的指令破坏?,angularjs,angularjs-directive,Angularjs,Angularjs Directive,我想在AngularJS中的指令中使用$timeout。但是我在指令文档中找不到一种方法来检测它何时被销毁,以防它发生在超时结束之前,我需要清理超时 是否有一个我可以绑定到的事件或一些内置函数(类似于控制器的$destroy)可以用来检测我的指令何时被销毁?还是我缺少了指令的一个基本概念?您提到的$destroy事件也可以在指令中使用: app.directive('myDirective', function() { return { link: function(scope) {

我想在AngularJS中的指令中使用$timeout。但是我在指令文档中找不到一种方法来检测它何时被销毁,以防它发生在超时结束之前,我需要清理超时


是否有一个我可以绑定到的事件或一些内置函数(类似于控制器的$destroy)可以用来检测我的指令何时被销毁?还是我缺少了指令的一个基本概念?

您提到的
$destroy
事件也可以在指令中使用:

app.directive('myDirective', function() {
  return {
    link: function(scope) {
      scope.$on('$destroy', function() {
        // Clean up
      });
    }
  };     
});

请务必注意,
$destroy
事件与作用域相关,而不是与控制器或指令相关。谢谢!我完全忘记了指令的作用域。@Blackhole我试图想出一种方法,可以在指令仍在页面中的情况下触发
$destroy
,或者在未触发
$destroy
的情况下从页面中删除该指令。除非手动修补DOM,否则我想不出一个。你说得对。这只是一个注释,帮助OP理解代码示例中发生的事情;)。请注意,如果您的指令或同一元素上的另一个指令都没有请求新的作用域(独立或非独立),那么所涉及的作用域将属于该元素的一个祖先,这意味着该指令本身可能会被销毁,而作用域将继续存在,并且永远不会通知您的指令。