内部に別のディレクティブmydiv
を埋め込むディレクティブがあります。myspan
したがって、私の index.html は次のようになります。
<mydiv></mydiv>
のテンプレートはmydiv
次のようになります。
<div>
<myspan><myspan>
</div>
そしてmyspan
単純です:
<span>asdf</span>
ここで、変数をディレクティブに動的に渡したいmyspan
ので、次のようにしますmydiv
。
<div>
<myspan data-text="hello"><myspan>
</div>
そして、これをディレクティブ リンク関数を使用してコントローラー スコープに追加しmyspan
ます (これは基本的にすべての「data-*」属性を取り、スコープに設定します)。
link: function(scope, elem, attrs){
for(var attr in attrs) {
scope[attr] = attrs[attr];
}
}
最終的に、myspan
テンプレートは次のようになります。
<span>{{text}}</span>
そしてそれはうまくいきます。
問題
テンプレートからスコープ変数を追加したいので、次のようにmydiv
しますmyspan
。mydiv
<div>
<myspan data-text="hello" data-scopevar="{{mydivText}}"><myspan>
</div>
ただし、これは機能せず、「{{mydivText}}」は渡される前にコンパイルされません。myspan
これは、ディレクティブが以前に初期化されたmydiv
ため、mydivText
まだ準備ができていないためだと思います。
質問
- まず第一に、これは変数を埋め込みディレクティブに渡す正しい方法ですか?
- 次に、親スコープの変数をその子に渡すにはどうすればよいですか? 子から $scope.$parent などを読み取る必要はなく、宣言的に直接渡す必要があることに注意してください。