我有一个AngularJS指令,如果指令的元素从DOM中删除(从AngularJS调用内部或通过任何其他方法,如jQuery),我需要执行某些操作。
这可能吗?
答案 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);
});
};
});