Ich möchte den Index der übergeordneten Liste (foos) als Argument für einen Funktionsaufruf in der untergeordneten Liste (foos.bars) verwenden.
Ich habe einen Beitrag gefunden, in dem jemand die Verwendung von $ parent. $ Index empfiehlt, aber $index
Ist keine Eigenschaft von $parent
.
Wie kann ich auf den Index des übergeordneten Elements ng-repeat
Zugreifen?
<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>
Mein Beispielcode war korrekt und das Problem war etwas anderes in meinem tatsächlichen Code. Ich weiß jedoch, dass es schwierig war, Beispiele dafür zu finden, und beantworte sie, falls jemand anders nach ihnen sucht.
<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>
Laut ng-repeat docs http://docs.angularjs.org/api/ng.directive:ngRepeat können Sie den Schlüssel- oder Array-Index in einer Variablen Ihrer Wahl speichern. (indexVar, valueVar) in values
damit du schreiben kannst
<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>
Eine Ebene höher ist mit $ parent. $ Index immer noch ziemlich sauber, aber mehrere Eltern oben können die Dinge chaotisch werden.
Hinweis: $index
wird weiterhin in jedem Bereich definiert und nicht durch fIndex
ersetzt.
Schauen Sie sich meine Antwort auf eine ähnliche Frage an .
Durch Aliasing von $index
Müssen wir keine verrückten Sachen wie $parent.$parent.$index
Schreiben.
Viel elegantere Lösung, als $parent.$index
ng-init verwendet:
<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>
Sie können den übergeordneten Index auch mit dem folgenden Code steuern
$parent.$parent.$index
Sie können einfach $ parent. $ Index verwenden, wobei parent das Objekt des sich wiederholenden Elternobjekts darstellt.