使用指令复制ng-if

时间:2017-06-06 20:20:42

标签: javascript angularjs angular-directive angular-directive-link

所以我有这个指令允许使用声明性隐藏或显示元素:

<div cdt-visible-to="Admin,Moderator">...</div>

因此我们的HTML变得尽可能具有声明性。这就是我们的指令:

eDiscovery.directive('cdtVisibleTo', ['AuthService', function (AuthService) {

    return {

      restrict: 'AE',

      link: function ($scope, elem, attrs) {

        let cdtArray = String(attrs['cdtVisibleTo'] || '')
        .split(/[ ,]+/).map(i => String(i).trim()).filter(i => i);

        let ln = cdtArray.length;

        for (let i = 0; i < ln; i++) {
          let r = cdtArray[i];
          if(AuthService.hasPersona(r)){
            elem.removeAttr('hidden');
            return;
          }
        }

        elem.attr('hidden', 'hidden');

      }
    }
  }]);

所以这就像是ng-show的替身。

我的问题是 - ng-if看起来会是什么样的?

使用Angular指令从DOM中删除元素的最佳方法是什么?

1 个答案:

答案 0 :(得分:1)

您可以使用Angular元素的.remove()方法从DOM中删除元素: 首先从你的元素中获取angular元素,然后使用remove函数

要执行此操作:

cca

如果传递给指令的Personas没有被授权,我想你想从DOM中删除它,所以也许你可以使用下面的代码:

angular.element(elem).remove();

更多信息&amp; angular.element的方法: https://docs.angularjs.org/api/ng/function/angular.element