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

Can the element reference in an AngularJS directive cause a memory leak?

本文关键字:内存 泄漏 指令 元素 引用 AngularJS      更新时间:2023-09-26

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

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

例如,假设我不希望在调用某些功能之前检查元素是否可见:

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

这会导致泄漏吗?

AFAICS 这不会产生任何内存泄漏。当元素被删除时,作用域将被销毁,监视将被删除,函数不再被引用。

作为微优化(您不应该真正打扰(,如果您只想执行一次代码,当元素可见时,您可以手动删除手表。(scope.$watch(( 返回一个函数,您可以调用该函数来删除监视。