【问题标题】:Can the element reference in an AngularJS directive cause a memory leak?AngularJS 指令中的元素引用会导致内存泄漏吗?
【发布时间】:2014-11-21 07:38:21
【问题描述】:

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

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

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

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

这会导致泄漏吗?

【问题讨论】:

    标签: javascript angularjs memory-leaks angularjs-directive


    【解决方案1】:

    AFAICS 这确实不会造成任何内存泄漏。 当元素被移除时,作用域被销毁,手表被移除,函数不再被引用。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-06-14
      • 2021-03-23
      • 2021-09-25
      • 2014-12-08
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多