Access index of the parent ng-repeat from child ng-repeat Access index of the parent ng-repeat from child ng-repeat angularjs angularjs

Access index of the parent ng-repeat from child ng-repeat


My example code was correct and the issue was something else in my actual code. Still, I know it was difficult to find examples of this so I'm answering it in case someone else is looking.

<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>


According to ng-repeat docs http://docs.angularjs.org/api/ng.directive:ngRepeat, you can store the key or array index in the variable of your choice. (indexVar, valueVar) in values

so you can write

<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>

One level up is still quite clean with $parent.$index but several parents up, things can get messy.

Note: $index will continue to be defined at each scope, it is not replaced by fIndex.


Take a look at my answer to a similar question.
By aliasing $index we do not have to write crazy stuff like $parent.$parent.$index.


Way more elegant solution whan $parent.$index is using 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>

Plunker: http://plnkr.co/edit/knwGEnOsAWLhLieKVItS?p=info