0

とだから私は、使用が宣言要素を非表示にしたり表示しできるようになります。このディレクティブを持っている:複製NG-IFディレクティブ

<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

あなたはDOMから要素を削除する角度要素の.remove()メソッドを使用することができます。これ行うためには まずあなたのelemから角度の要素を取得し、remove関数に

を使用します。

var notAuthorized = false; 
for (let i = 0; i < ln; i++) { 
    let r = cdtArray[i]; 
    if(AuthService.hasPersona(r)){ 
    notAuthorized = true; //A Persona is authorized 
    return; 
    } 
} 

if (notAuthorized) { 
    angular.element(elem).remove(); 
} 
angular.element(elem).remove(); 

私はので、多分あなたは、次のコードを使用することができ、あなたはディレクティブに渡されたのPersonasの誰が許可されていない場合DOMからそれを削除したいと思いますangular.elementのの

詳細情報&方法: https://docs.angularjs.org/api/ng/function/angular.element

+0

おかげで、それは)(angular.elementとのelemをラップする必要があるのでしょうか? –

+1

remove()メソッドを使用する必要があります。ネイティブJSを使用する場合は、elem.parentNode.removeChild(elem)を使用できます。 – Sergio10

+0

ありがとう:)私はangular.elem()を使用すると思いますが、jQueryを背後で使っていると思います。 –

関連する問題