从dom角度移除元素

时间:2014-09-30 14:15:59

标签: arrays angularjs angularjs-directive

如何使用angular指令正确删除dom模型中的元素?

.directive('restrict', ['AuthService', function (authService) {
    return {
        restrict: 'A',
        prioriry: 100000,
        scope: false,
        link: function () {
            alert('1');
        },
        compile: function (element, attr, linker) {
            var accessDenied = true;
            var user = authService.getUser();
            var attributes = attr.access.split(" ");

            for (var i in attributes) {
                if (user.roles.indexOf(attributes[i]) > -1) {
                    accessDenied = false;
                }
            }

            if (accessDenied) {
                element.children().remove();
                element.remove();
            }
        }
    }

此代码在最后一行抛出异常:

  

TypeError:无法读取未定义

的属性'childNodes'

指令适用于td或li元素,但对于a或div或span

则错误
<span data-restrict access='EditUser' class="glyphicon glyphicon-trash" ng-click="deleteUser(u)"></span>

1 个答案:

答案 0 :(得分:0)

不是这样做,你可以采用不同的方法,你可以添加一个控制器,根据相同的条件在作用域上设置一个标志(accessDenied),然后在你的指令上使用ng-if,或者第一个子元素失败这一点。