检测是否指令从DOM移除(Detect if directive was removed from

2019-10-23 07:55发布

我有一个AngularJS指令,我需要执行某些操作,如果该指令的元件从DOM移除(无论是从一个AngularJS呼叫内或通过任何其他方法,如jQuery)。

那可能吗?

Answer 1:

在指令中,当一个元素从DOM移除,$ Destroy事件中被发射。 里面你指导的链接功能,你可以这样做: -

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

欲了解更多信息和完整的示例,请参阅文件在这里

编辑:请参见本plunker看到$行动摧毁。 在这里,我2秒后删除元素,并在控制台日志记录销毁。



Answer 2:

当你的指令从DOM中删除,那么$destroy事件。 看到这里https://docs.angularjs.org/api/ng/type/ $ rootScope.Scope#$摧毁

在这个问题( 提供示波器的例子$破坏事件? )我发现下面的例子:

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


文章来源: Detect if directive was removed from DOM