1

内部に別のディレクティブ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しますmyspanmydiv

<div>
    <myspan data-text="hello" data-scopevar="{{mydivText}}"><myspan>
</div>

ただし、これは機能せず、「{{mydivText}}」は渡される前にコンパイルされません。myspanこれは、ディレクティブが以前に初期化されたmydivため、mydivTextまだ準備ができていないためだと思います。

質問

  1. まず第一に、これは変数を埋め込みディレクティブに渡す正しい方法ですか?
  2. 次に、親スコープの変数をその子に渡すにはどうすればよいですか? 子から $scope.$parent などを読み取る必要はなく、宣言的に直接渡す必要があることに注意してください。
4

1 に答える 1