Mein HTML-Code
<div> <ul> <li ng-repeat='parentItem in arr1'> <div ng-repeat='childItem in arr2'> {{ $parent.$index }} , {{ $index }} </div> </li> </ul> </div>
Javascript-Code im Controller
$scope.arr1 = [1,2]; $scope.arr2 = [1,2];
Dieser Code gibt mir die richtige Antwort
0, 0 0, 1 1, 0, 1, 1
Aber wenn ich ng-if="true"
in der Child-Schleife verwende, bekomme ich eine falsche Antwort
<div> <ul> <li ng-repeat='parentItem in arr1'> <div ng-repeat='childItem in arr2' ng-if="true"> {{ $parent.$index }} , {{ $index }} </div> </li> </ul> </div>
0, 0 1, 1 0, 0 1, 1
Das war falsch. Es ändert den übergeordneten Index in den untergeordneten Index
Bitte beheben Sie dieses Problem
Dies ist in Angular kein Problem. Dies geschieht ( wie dokumentiert ), weil ngIf
einen neuen Bereich erstellt, also bezieht sich $parent
nicht auf den Bereich des äußeren ngRepeat
.
Aus diesem Grund ist die Verwendung von $parent
hier keine gute Methode. Sie könnten/sollten ngInit
, um einen Alias des übergeordneten Indexes wie
<li ng-repeat="parentItem in arr1" ng-init="parentIdx = $index">
<div ng-repeat="childItem in arr2" ng-if="true">
{{ parentIdx }} , {{ $index }}
</div>
</li>
Übrigens, dies ist eine allgemeine Support-Frage. Solche Fragen sollten besser an die entsprechenden Kanäle gerichtet werden .
GitHub-Probleme sind Fehlerberichten und Funktionsanfragen vorbehalten.
Vielen Dank,
Ich kann das von ng-init verwenden
Hilfreichster Kommentar
Dies ist in Angular kein Problem. Dies geschieht ( wie dokumentiert ), weil
ngIf
einen neuen Bereich erstellt, also bezieht sich$parent
nicht auf den Bereich des äußerenngRepeat
.Aus diesem Grund ist die Verwendung von
$parent
hier keine gute Methode. Sie könnten/solltenngInit
, um einen Alias des übergeordneten Indexes wieDemo