2

付属のプランカー

div に属性レベルのカスタム ディレクティブがあります。ディレクティブには、分離されたスコープがあります。私の div の中には、親のスコープ内にあることを期待する他のディレクティブがあります。

問題は、私の div 内のディレクティブが親スコープではなく、分離されたスコープにのみアクセスできることです。理由はわかりますが、きれいに解決する方法がわかりません。

これを解決するためにtranscludeを使用できることは知っていますが(plunkerを参照)、これは非常にずさんに感じます。テンプレートは必要ありませんが、トランスクルードを機能させるためだけにテンプレートを作成する必要があり、ネストされたディレクティブが正しいスコープにアクセスできるようにする唯一の方法はトランスクルードのようです。

これを行う別のよりクリーンな方法はありますか?

考えられるいくつかの質問を回避するには:

  • 要素レベルではなく属性レベルのディレクティブを使用して、IE をより簡単にします
  • ベストプラクティスであるため、分離されたスコープを使用しています。誤って親スコープをホースで接続したくなく、ディレクティブを移植可能にしたいのです。
4

2 に答える 2

2

あなたが何をしようとしているのか本当にわかりません。

しかし、実際に行っているのは、分離されたスコープで双方向バインドを利用して悪影響を与えることです。ご質問とはほとんど関係ないようです。

とにかく...これがあなたのプランカーのアップデートです

基本的に何が起こっていたかは、スコープ宣言で割り当てた名前を使用する必要がある分離ディレクティブ内にあります。この場合はtoggleOn().

ただし、必要に応じてこれを行うことができます。基本的には電話するだけ$parent.colorToggle()です。

于 2013-01-15T19:18:15.620 に答える
2

これがトランスクルージョンよりも「ずさんではない」かどうかを判断できます。

<button ng-click="$parent.colorToggle()">Inside</button>

Isolate スコープは、プロパティを介して親スコープにアクセスでき$parentます。アイソレート スコープは親スコープからプロトタイプとして継承されませんが、Angular は $parent と $$childHead と $$childTail を介して階層を維持します。

于 2013-01-15T19:18:23.123 に答える