小编Foo*_*bar的帖子

AngularJS:以编程方式将ngIf添加到指令的最佳做法是什么?

我想创建一个指令,根据来自服务的值(例如,检查用户角色)检查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 …

javascript angularjs angularjs-directive

49
推荐指数
3
解决办法
4万
查看次数