したがって、Angular 1.2 RC2 を使用するこのコード例があり、すべて正常に動作します。ハンドルをクリックしてコンテンツの表示を切り替えると、コントローラーとディレクティブは意図したとおりに別々のスコープを持ちます。
http://plnkr.co/edit/e3XAZuhSMAxmkWzKKM39?p=preview
昨日 Angular RC3 にアップグレードしましたが、機能がプランカーのままでは機能しません。変更ログを調べてみると、これはこの重大な変更に関係している可能性があります。
$compile: due to 31f190d4, the order of postLink fn is now mirror opposite of the order in which corresponding preLinking and compile functions execute
これを修正するには、投稿リンクを事前リンクに変換することを提案するか (私の投稿リンクには、事前リンクでは利用できないスコープへのアクセスが必要なため、これを行うことができます)、またはディレクティブの優先度を下げます。したがって、このプランカーはそれを行い、機能は機能します:
http://plnkr.co/edit/arP3aruH8HEdiwFg6mWp?p=preview
ただし、大きな問題があります。これは、特定の優先度が高くなり、ジェネリックが必要とする分離スコープが作成されなくなったため、contentVisible がコントローラー スコープ上にあるため、良くありません。
これで、scope: {} をジェネリック ディレクティブから特定のディレクティブに移動できますが、ジェネリック ディレクティブを単独で使用できるはずです。このディレクティブの複数のインスタンスを持つことは不可能になります。これは、独自のスコープが必要な方法です)。
私が考えることができる唯一のことは、isoScope のようなものと呼ばれるディレクティブを追加し、その優先度が非常に高いことを確認し、スコープを定義することです: {}。次に、ジェネリックを単独で使用する必要がある場合は、isoScope ディレクティブも追加して、Isolate スコープがあることを確認する必要があります。このような:
http://plnkr.co/edit/1NYHpUcPFWEbAzvkCeRH?p=preview
今、私は、isolateScope ディレクティブなしで探しているものを達成するためのより良い方法があることを望んでいます。それなしでこれを行う方法がありませんか?
更新された例
だから、ここに私が伝えようとしていることのうまくいけばより良い例を含む別のプランカーがあります(まだ実質的にスタイルはありませんが、要点を理解するために必要ではありません):
http://plnkr.co/edit/KtRMa1c9giDrhi1Rqyho?p=preview
私は3つのディレクティブを持っています:
- エキスパンダー
- 通知
- 分離スコープ
expander ディレクティブは、コンテンツを展開して折りたたむ機能を追加するだけで、それ以上のものはありません。この機能は、単独で、または別のディレクティブと一緒に使用できる必要があります (これがコントローラーを備えている理由です)。
通知ディレクティブは通知を表示するために使用されますが、常に通知を表示したくないため、ユーザーが実際の通知の表示を切り替えることができるように、これを expander ディレクティブと共に使用します (stackoverflow.com が行う方法と同様)。左上にあります)。
エキスパンダーは別のディレクティブで使用される可能性が最も高いと思いますが、単独で使用できるはずであり、それが isolateScope ディレクティブの出番です。expander ディレクティブはスコープにデータを追加し、同じページに複数のエキスパンダーが必要な場合があるため、機能させるには分離スコープが必要です。ユーザー プロファイル ページには、常に表示する必要のない開発者キーやアドレスなどのデータがあるので、ユーザーがそれを制御できるようにします。分離スコープがないと、両方が同じスコープ上にあり、contentVisible の同じインスタンスによって制御されるため、両方を個別に制御できる分離スコープがあります。
とにかく、ディレクティブが 1.2.0 RC3 でどのように実行され、その isolateScope ディレクティブなしでこれを達成できるかがわかりません (ただし、間違っていることが証明されれば幸いです)。