Je veux utiliser l'index de la liste parente (foos) comme argument pour un appel de fonction dans la liste des enfants (foos.bars).
J'ai trouvé un article où quelqu'un recommande d'utiliser $ parent. $ Index, mais $index
n'est pas une propriété de $parent
.
Comment puis-je accéder à l'index du parent ng-repeat
?
<div ng-repeat="f in foos">
<div>
<div ng-repeat="b in foos.bars">
<a ng-click="addSomething($parent.$index)">Add Something</a>
</div>
</div>
</div>
Mon code d'exemple était correct et le problème était quelque chose d'autre dans mon code réel. Néanmoins, je sais qu'il était difficile de trouver des exemples, alors je réponds au cas où quelqu'un d'autre regarderait.
<div ng-repeat="f in foos">
<div>
<div ng-repeat="b in foos.bars">
<a ng-click="addSomething($parent.$index)">Add Something</a>
</div>
</div>
</div>
Selon ng-repeat docs http://docs.angularjs.org/api/ng.directive:ngRepeat , vous pouvez stocker l'index de clé ou de tableau dans la variable de votre choix. (indexVar, valueVar) in values
pour pouvoir écrire
<div ng-repeat="(fIndex, f) in foos">
<div>
<div ng-repeat="b in foos.bars">
<a ng-click="addSomething(fIndex)">Add Something</a>
</div>
</div>
</div>
Un niveau supérieur est encore assez propre avec $ parent. $ Index mais plusieurs parents supérieurs, les choses peuvent devenir compliquées.
Remarque: $index
continuera d'être défini à chaque portée, il n'est pas remplacé par fIndex
.
Jetez un oeil à ma réponse à une question similaire .
En aliasant $index
nous n’avons pas besoin d’écrire des choses folles comme $parent.$parent.$index
.
Solution beaucoup plus élégante que $parent.$index
utilise ng-init :
<ul ng-repeat="section in sections" ng-init="sectionIndex = $index">
<li class="section_title {{section.active}}" >
{{section.name}}
</li>
<ul>
<li class="tutorial_title {{tutorial.active}}" ng-click="loadFromMenu(sectionIndex)" ng-repeat="tutorial in section.tutorials">
{{tutorial.name}}
</li>
</ul>
</ul>
Vous pouvez également obtenir le contrôle de l'index grand parent à l'aide du code suivant
$parent.$parent.$index
Vous pouvez simplement utiliser $ parent. $ Index. Où parent sera l’objet de l’objet répété parent.