2017-07-10 10 views
0

グリッドセルに複数のポップオーバーがあり、それらにappend-to-body = "true"属性を使用しています。グリッドを下にスクロールすると、プログラムでポップアップを非表示にしたいと思う。現在、私はAngular Bootstrap閉じるポップオーバーは、閉じると2回かかります。

 function closeAllPopOvers() { 
     var popups = document.querySelectorAll('.popover'); 
     if(popups) { 
      for(var i=0; i<popups.length; i++) { 
       var popup = popups[i]; 
       var popupElement = angular.element(popup); 
       popupElement.scope().$parent.isOpen = false; 
       popupElement.remove(); 
      } 
     } 
    } 

にこれが提示問題をそれらを隠すために、このコードを使用してい

は、私は戻って、このコードによって閉鎖されたpopoversのいずれかに行けばそれが開くように2回のクリックを取ることです。ボディに追加されているすべてのポップオーバーを閉じる適切な方法は何ですか?私はあなたがポップオーバーのトリガ設定をめちゃくちゃにしていると思います

答えて

1

は、none

popover-trigger="'none'" 

popover-triggerを設定してみてくださいし、その式がfalseに評価するときにpopover-is-open

popover-is-open="$expression_result" 

に式を提供し、あなたのポップオーバーが終了します(またその逆)

ps

私は、その項目ごとpopover-is-openにバインドされているあなたのコントローラ、内部の式の配列を保持するために容易になるだろう、あなたはこのライン

var popups = document.querySelectorAll('.popover'); 

しないでくださいを使用してpopoversを取得している気づきました特定のイベントでは、その配列を簡単にトラバースして、ポップオーバーを操作できます。

+0

ありがとうございます - クリックするように設定しました。トリガーをnoneに変更し、配列を使用してpopover-is-openのすべての値を保持しました。 popover-is-openは、特定のpopoverの配列内の値を見つける関数に設定されます。 – MasterN8

関連する問題