如何删除从父指令注入的组件的作用域

na

我有一个指令,可以根据某些输入将子级自定义指令动态添加到DOM。一切正常。但是,当输入发生更改并且我使用一组不同的子自定义指令重新渲染DOM时,不会删除子自定义指令的旧范围,因此,附加到它们的事件处理程序仍在内存中。

我只是通过设置element [0] .innerHTML =”重新呈现DOM。有没有一种方法可以删除/销毁自定义指令的作用域?我在一些文章中看到scope。$ destroy可以被调用,但是如何获得对子自定义指令范围的引用?

const linker = function (scope, element) {
scope.$watch('data', function () {
    reRenderToolbar();
}, true);

const reRenderToolbar = function () {
    element[0].innerHTML = '';
    _.forEach(scope.data, function (item, key) {
        const directive = item.CustomDirective;
        scope.options = item.options || {};
        html = '<' + directive + ' options="options"></' + directive + '>';
        element.append(html);
    }


   });
}

    $compile(element.contents())(scope);
    };
na

问题是由于我的应用程序是多范围的,因此我没有销毁父级中的子范围。本文对我有帮助http://www.mattzeunert.com/2014/11/03/manually-removing-angular-directives.html代码:

    const linker = function (scope, element) {
scope.$watch('data', function () {
    reRenderToolbar();
}, true);
let childScope;

const reRenderToolbar = function () {
if(childScope) {
childScope.$destroy();
}
    element[0].innerHTML = '';
    _.forEach(scope.data, function (item, key) {
        const directive = item.CustomDirective;
        scope.options = item.options || {};
        html = '<' + directive + ' options="options"></' + directive + '>';
        element.append(html);
    }

   });
}


    childScope = scope.$new()
    $compile(element.contents())(childScope);
    };

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何使用.NET Core中的默认依赖项注入从父级创建子级作用域?

如何从父作用域获取参数到子作用域?

如何将子类的指令注入组件

AngularJS如何从指令访问Controller作用域

如何访问嵌套指令中的作用域?

在控制器中注入指令时,指令/控制器作用域未定义

如何将变量从父组件中声明的ng-template传递给子组件/指令?

如何设置AngularJS组件的作用域

当存在嵌套组件时,ng-content从父级作用域排除

如何删除CDI会话作用域的bean

指令可以从父范围删除自己吗

如何从链接函数中检查Angular指令中的作用域?

嵌套指令后,如何访问特定的父作用域?

如何正确清理Angular指令的子作用域

被指令包装后,如何访问其作用域?

Angular指令compile()函数如何访问隔离的作用域?

如何在指令中使用作用域的变量?

如何使用嵌套指令保留作用域?

如何在Angular指令中处理多个作用域?

传递给指令时如何更新Angular作用域属性?

如何使用装饰器将变量注入作用域?

角度指令作用域问题

如何在不指定组件类型的情况下将父组件注入共享指令?

AngularJS嵌套ng-repeat我如何从父控制器中引用子作用域?

如何刷新模板中存在的指令和指令具有自己的数据作用域

如何更改任一指令的所有指令作用域值?

ReactJS。如何从父组件调用组件的方法

如何在Vue组件中覆盖作用域样式?

如何通过使用构造函数注入将作用域代理bean注入单例bean