AngularJS指令中的元素引用是否会导致内存泄漏?

时间:2014-09-26 10:08:37

标签: javascript angularjs memory-leaks angularjs-directive

在AngularJS指令中,如果你已经使用它,那么将元素引用设置为undefined是否有意义?

换句话说,可以使用元素引用导致内存泄漏吗?我们目前正在分析我们的应用程序,并且我试图找出我们为什么会有内存泄漏。

例如,让我说在调用某些功能之前,我不想检查元素是否可见:

module.directive("myDir", function(){
    return {
        link: function(scope, element){
            scope.$watch(function(){
                return element.is(":visible");
            }, function(isElementVisible){
                if(isElementVisible){
                    // do something ...
                }
            }
        } 
    };
});

这会导致泄漏吗?

1 个答案:

答案 0 :(得分:0)

AFAICS这会造成任何内存泄漏。 删除元素后,范围将被销毁,手表将被删除,不再引用该函数。

作为微优化(你不应该特别烦),如果你只想执行一些代码,当元素可见时,你可以手动删除手表。 (范围。$ watch()返回一个可以调用以删除监视的函数。)