一部のデータが更新されたときにDOMに要素を追加/削除するjavascriptライブラリを使用しています。
新しい要素をDOMに追加するには、要素を返すテンプレート関数を呼び出します。私の場合、テンプレート関数は角度指示の中で定義され、追加された要素の中でUI Bootstrap Popover指示文を使う必要があるので、return $compile(html)(scope)[0];
のようなものを返します。
Popoverについては、popover-append-to-body="true"
を使用する必要があります。Angular UI Bootstrap - トリガー要素がDOMから削除されたときにポップオーバーを削除できない
私の問題は、トリガー要素がDOMから削除された場合、ポップオーバーは決して削除されないということです。削除を「削除」をクリックし、ボタンがポップオーバーを開く「をクリックします」をクリックhttp://plnkr.co/edit/AFsXBcaLBAs0F2garbAu?p=preview
:だから私たちは新しいトリガー要素を追加した場合、第二ポップオーバーは、本体に追加される、など。ここ
は簡略化した例であります「クリック」ボタンをクリックして「追加」をクリックすると、「クリック」ボタンが再度追加され、もう一度「クリック」をクリックすると、2回目のポップオーバーがDOMに追加されます。
トリガ要素がDOMから削除されたときにPopoverディレクティブを削除するにはどうすればよいですか?
私はそれを隠すだけでなく、DOMから削除する必要があります(popover-is-open
で隠すことができますが、これをtrueに戻すと、まだポップオーバーが存在することがわかります)。
削除される要素のPopoverディレクティブでdestroyを呼び出す方法はありますか?
コントローラでDOM操作をしない、あなたはこの@svarogあなたのコード – svarog
を再設計することもポップオーバーの問題を表示するだけの簡単な例でした。私の実際のコードでは、私はコントローラでDOM操作をしていませんが、角度のあるライブラリを使用しています。問題は、 "ボタン"が作成され、このライブラリによってDOMに追加されるため、配列内に状態を保持できないことです。私の例でvanilla jsと書いたのは、私の実際のアプリケーションでは角度をつけて制御できないものです。 –
あなたはまったく異なる問題を抱えています。コードを生成するボタンをディレクティブ内のリンク関数にインポートし、その上に '$ watch'を保持し、変更を' $ apply'する必要があります – svarog