AngularJS指令泄漏

时间:2017-12-06 06:55:52

标签: angularjs angular-directive

我有一个编译以下html的指令:

<div asi-template class="{{asimon.isTable(_a.path+'.'+key) }}">

asimon.isTable是一个vanilla javascript函数,我的问题是,调用这样的函数可能会阻止GC即使在视图被破坏后收集它吗?

我不知道是什么让我的指令泄漏。

顺便说一句 这是我的指示:

module.directive('asiTemplate',
function($compile) {
  return {

    link: function(scope, element, attr) {
        var wachingGroup=scope.$watchGroup(
            [
                function(scope){ return scope.$eval(attr.asiPath); },
                function(scope){ return scope.$eval(attr.asiObject); },
                function(scope){ return attr.asiClass; }
            ],
            function(value){
                var scope_id = asi.path.get('scope_id.value', element[0].attributes);
                console.log({scope_id:scope_id, scope:asi.scope[scope_id], attr:element[0].attributes});
                if(asi.scope[scope_id] !== undefined) destroyscope(scope_id);

                asi.template.load(element, attr, scope);
            }
        );
        scope.$on('$destroy', function(){
            wachingGroup();//desregistra el watchgroup  
            element.remove();

        });
    }
}
});

0 个答案:

没有答案