我试图实现一个指令,根据用户角色从页面中删除元素。
这是指令:
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调用时,元素不会被删除。