我想创建一个指令,根据来自服务的值(例如,检查用户角色)检查dom中是否应该存在元素.
相应的指令如下所示:
angular.module('app', []).directive('addCondition', function($rootScope) {
return {
restrict: 'A',
compile: function (element, attr) {
var ngIf = attr.ngIf,
value = $rootScope.$eval(attr.addCondition);
/**
* Make sure to combine with existing ngIf!
* I want to modify the expression to be evalued by ngIf here based on a role
* check for example
*/
if (ngIf) {
value += ' && ' + ngIf;
}
attr.$set('ng-if', value);
}
};
});
Run Code Online (Sandbox Code Playgroud)
最后,元素附加了ng-if属性,但不知何故,它不适用于元素,它仍然存在于dom中.所以这显然是一种错误的做法.
这个小提琴显示了问题:http://jsfiddle.net/L37tZ/2/
谁能解释为什么会这样?有没有其他方式可以实现类似的行为?应考虑现有的ngIfs.
用法: <div rln-require-roles="['ADMIN', 'USER']">I'm …