web-dev-qa-db-fra.com

AngularJS: ng-repeat track par $ index à l'intérieur de boucles imbriquées

J'ai besoin d'un deuxième index $ pour ma boucle imbriquée ng-repeat. Comment et où devrais-je le mettre?

site AngularJS dit

La création d'alias pour ces propriétés est possible avec ngInit. Cela peut être utile, par exemple, pour imbriquer ngRepeats.

<div ng-repeat="person in persons track by $index">
    <div ng-repeat="something in array track by $index2"> <!-- where to init this and how to manage it?-->

Si j'utilise à nouveau $ index, cela semble fonctionner mais je ne suis pas sûr que ce soit la bonne chose? Je suis sûr qu'il existe un moyen facile et correct de le faire, je ne pouvais tout simplement pas trouver un exemple.

Merci

44
trainoasis

$index fera référence à l'index de la portée la plus interne ngRepeat, donc si c'est ce dont vous avez besoin, vous pouvez simplement l'utiliser.

Ce que décrit la documentation est un scénario dans lequel vous devez avoir accès à $index dans le parent ngRepeat. Vous pouvez l’obtenir de différentes manières: L’une consiste à utiliser $parent, et une autre consiste à utiliser ngInit, en tant que Angular suggérés. Voici un exemple ...

<li ng-repeat="thing in things" ng-init="parentIndex = $index">
    {{ $index }}
    <ul>
        <li ng-repeat="value in thing.values">
            {{ value }} 
            {{ $index }} <!-- inner $index -->
            {{ $parent.$index }} <!-- parent $index -->
            {{ parentIndex }} <!-- also parent $index -->
        </li>
    </ul>
</li>

violon

125
Anthony Chu