2

在我的角度应用程序中,我有一个指令。如果我使用 DOM 操作(例如 jQuery empty())删除这个,则不会调用销毁事件:

myApp.directive('joe', function()
{
    return {
        restrict: 'E',
        replace: true,
        link: function(scope, element, attrs)
        {            
            element.html("Hi !");

            element.bind('$destroy', function() 
            {
                console.log("Bye");
            });
        }
    };
});

演示:http: //jsfiddle.net/ymx4N/

此外,如果我用 empty() 和 appendTo() 多次删除和添加这个指令,节点的数量总是会增加。这意味着所有指令总是在内存中,垃圾收集器永远不会删除这些节点。

也许这是一种“正常”行为,因为 AngularJS 无法知道我何时直接删除/更改 DOM 节点。但是,是否可以明确销毁指令?在没有这种“”“内存泄漏”“”的情况下,如何通过 DOM 操作添加和删除指令?

谢谢 !

4

0 回答 0