检测是否从DOM中删除了指令

时间:2015-06-11 10:22:55

标签: javascript angularjs dom angularjs-directive

我有一个AngularJS指令,如果指令的元素从DOM中删除(从AngularJS调用内部或通过任何其他方法,如jQuery),我需要执行某些操作。

这可能吗?

2 个答案:

答案 0 :(得分:6)

在指令中,当从DOM中删除元素时,会发出$ destroy事件。在指令的链接功能中,您可以这样做: -

element.on('$destroy', function() {
   // do stuff
});

有关详细信息和完整示例,请参阅文档here

编辑:请参阅this plunker以查看$ destroy的实际操作。在这里,我将在2秒后删除元素,并在控制台中记录日志。

答案 1 :(得分:1)

从DOM中删除指令后,会触发$destroy事件。请参阅此处https://docs.angularjs.org/api/ng/type/ $ rootScope.Scope#$ destroy

在这个问题(Provide an example of scope's $destroy event?)中,我找到了以下示例:

ctrl.directive('handleDestroy', function() {
    return function(scope, tElement, attributes) {        
        scope.$on('$destroy', function() {
            alert("In destroy of:" + scope.todo.text);
        });
    };
});