element.remove在成功$ http调用后不会执行

时间:2017-01-23 17:54:03

标签: javascript angularjs angularjs-directive

我使用指令来检查用户是否具有查看某个元素的正确角色。

这是我的指示:

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();
  }

 }
}

如您所见,我在异步调用element.remove的成功回调中调用了$http,这样我就可以确定在我获得角色后element.remove被取消了,奇怪的是,元素没有被删除[我已经测试了它,我可以绕过if条件。)

如果我尝试使用静态值的相同指令,则 IS 会被删除。

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

编辑:

如果您有任何替代方案,请选择我的客人。

0 个答案:

没有答案