2 つの異なるカスタム ディレクティブがあり、どちらもスコープが分離されています。取得せずに同じ要素で両方のディレクティブを使用する方法はありますか:
エラー: 複数のディレクティブ [...] で分離スコープを要求しています ...
そうすることで共通のスコープを共有すると思いましたが、そうではないようです(このエラーが発生するため)...
ありがとうトム
2 つの異なるカスタム ディレクティブがあり、どちらもスコープが分離されています。取得せずに同じ要素で両方のディレクティブを使用する方法はありますか:
エラー: 複数のディレクティブ [...] で分離スコープを要求しています ...
そうすることで共通のスコープを共有すると思いましたが、そうではないようです(このエラーが発生するため)...
ありがとうトム
OK、両方のディレクティブに同じコントローラーを使用して、親スコープとは異なるスコープを共有できるようにすることで、この問題を回避しました...
私はまだその主題に関する提案に興味があります.
$compile メソッドへの参照に、ディレクティブ スコープを組み合わせる方法の概要があります。
要点は、Isolate スコープは決して共有されないこと、および要素にアタッチできるスコープは最大で 1 つであることです。ディレクティブが代わりに子スコープを使用する場合、それは両方のディレクティブ間で共有されます。
- スコープなし + スコープなし=> 独自のスコープを必要としない 2 つのディレクティブは、親のスコープを使用します
- 子スコープ + スコープなし=> 両方のディレクティブが 1 つの子スコープを共有します
- 子スコープ + 子スコープ=> 両方のディレクティブが 1 つの子スコープを共有します
- 分離スコープ + スコープなし=> 分離ディレクティブは、独自に作成された分離スコープを使用します。他のディレクティブは、その親のスコープを使用します
- 分離スコープ + 子スコープ=> 動作しません! 1 つのエレメントに関連付けることができるスコープは 1 つだけです。したがって、これらのディレクティブを同じ要素に適用することはできません。
- 分離スコープ + 分離スコープ=> 動作しません! 1 つのエレメントに関連付けることができるスコープは 1 つだけです。したがって、これらのディレクティブを同じ要素に適用することはできません。
ええと、Angular では、親スコープで作業するか、ディレクティブ間で通信するかを選択できると思います。
「スレーブ」ディレクティブが消費するコントローラー関数を追加することにより、「マスター」ディレクティブにインターフェイスを追加することで、後者を実現できます。スレーブは依存関係を説明し、require: '^masterDirective'
そのインターフェイスをlink
関数で使用できます。
素敵な例で公式の説明を参照してください: https://docs.angularjs.org/guide/directive#creating-directives-that-communicate