私のHTMLコード
<div> <ul> <li ng-repeat = 'arr1のparentItem'> <div ng-repeat = 'char2のchildItem'> {{$ parent。$ index}}、{{$ index}} </ div> </ li> </ ul> </ div>
コントローラ内のJavascriptコード
$ scope.arr1 = [1,2]; $ scope.arr2 = [1,2];
私に正しい答えを与えるこのコード
0、0 0、1 1、0、 1、1
しかし、子ループでng-if="true"
を使用すると、間違った答えが返されます
<div> <ul> <li ng-repeat = 'arr1のparentItem'> <div ng-repeat = 'childItem in arr2' ng-if = "true"> {{$ parent。$ index}}、{{$ index}} </ div> </ li> </ ul> </ div>
0、0 1、1 0、0 1、1
これは間違っていました。 親インデックスを子インデックスに変更します
この問題を修正してください
これはAngularの問題ではありません。 ngIf
が新しいスコープを作成するため、これは(文書化されているように)発生します。したがって、 $parent
は外側のngRepeat
のスコープを参照しません。
そのため、ここでは$parent
を使用することはお勧めできません。 次のように、 ngInit
を使用して、親インデックスのエイリアスを作成できます。
<li ng-repeat="parentItem in arr1" ng-init="parentIdx = $index">
<div ng-repeat="childItem in arr2" ng-if="true">
{{ parentIdx }} , {{ $index }}
</div>
</li>
ところで、これは一般的なサポートの質問です。 このような質問は、適切なチャネルに向けてください。
GitHubの問題は、バグレポートと機能リクエストのために予約されています。
ありがとう、
ng-initで使えます
最も参考になるコメント
これはAngularの問題ではありません。
ngIf
が新しいスコープを作成するため、これは(文書化されているように)発生します。したがって、$parent
は外側のngRepeat
のスコープを参照しません。そのため、ここでは
$parent
を使用することはお勧めできません。 次のように、ngInit
を使用して、親インデックスのエイリアスを作成できます。デモ