我使用指令来检查用户是否具有查看某个元素的正确角色。
这是我的指示:
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 会被删除。
任何帮助都将不胜感激,谢谢。
编辑:
如果您有任何替代方案,请选择我的客人。