element.remove不起作用

时间:2017-01-23 01:03:04

标签: javascript jquery angularjs

我试图实现一个指令,根据用户角色从页面中删除元素。

这是指令

angular.module("BlurAdmin")
    .directive('restrict',restrict);
function restrict (authService, $http, $state){
return{
    restrict: 'A',
    prioriry: 100000,
    scope: false,
    link: function(){
    },
    compile:  function(element, attr, linker){
        var accessDenied = true;

        var attributes = attr.access.split(" ");

        var getCurrentUser = function () {

               authService.getCurrentUser()
                    .success(function (data) {
                        var user = data;
                        for(var i in attributes){
                          if(user.roles[0].name == attributes[i]){
                              accessDenied = false;
                          }
                        };
                        if(accessDenied){
                            element.children().remove();
                            element.remove();
                        };
                    })
                    .error(function (data, status) {
                        $state.go("/login");
                    });
        };
        getCurrentUser();
    }

  }
}

这是我如何访问它:

<input type="text" id="title" ng-model="reunion.title" restrict access="SUPERCHEF" required>

一切正常但是element.remove,它似乎并没有按照它应该做的那样去做。

任何帮助都将不胜感激。谢谢你

编辑:当我执行element.text()时,我会在元素中获取文字,但该元素仍然无法移除。

BTW 我正在使用此front-end framework

编辑2:                             WEIRD BEAVAVIOR

如果我删除$ http调用并按照以下方式执行:

angular.module("BlurAdmin")
    .directive('restrict',restrict);

function restrict (authService, $http, $state){


return{
    restrict: 'A',
    prioriry: 100000,
    scope: true,
    link: function(){
        // alert('ergo sum!');
    },
    compile:  function(element, attr, linker){
        var accessDenied = true;

        var attributes = attr.access.split(" ");

        console.log("remove elem");
        element.children().remove();
       element.remove();
    }

  }
}

---------&gt; 元素正在被删除。

但是当我添加$ http调用时,元素不会被删除。

0 个答案:

没有答案