3

分離スコープとスコープへのアクセスを必要とする AngularJS ディレクティブがあり$parentます。親スコープには、ajax 呼び出しの完了後に変更されるデータがあります。

私のディレクティブのリンク関数には、次のものがあります。

scope.loading = scope.$parent.contractData.People.loading;

ただし、親のcontractData値が変更されscope.loadingても更新されません。を使用してみましscope.$watchたが、変更も通知されません。

私のディレクティブのテンプレートでは、ng-show. 次のテンプレートは期待どおりに機能します。

<span ng-show="$parent.contractData.People.loading">loading</span>

ただし、これは機能しません (スコープがデータの変更を認識しないため)。

<span ng-show="loading">loading</span>

ディレクティブの属性に渡されるデータに応じて「People」が変化するため、ディレクティブでスコープ変数を設定できる必要があります。それ以外の場合は、上記の実際の例に固執します。

どんな助けでも大歓迎です。ありがとうございました。

4

1 に答える 1

4

次のように、ディレクティブの HTML を設定できます。

<div mydirective="contractData.People.loading"></div>

そして、ディレクティブ自体の中で、loadingプロパティへの分離スコープ バインディングを作成します。

scope: {
    isLoading: '=mydirective'
},
// rest of directive

これにより、属性式にバインドされたディレクティブのローカル スコープにプロパティが作成されます。次に、ディレクティブのテンプレートでそのスコープ プロパティを次のように参照できます。

template: '<span ng-show="isLoading">loading</span>'

ここにフィドルがあります

于 2013-06-08T19:38:17.240 に答える