来自子ng-repeat的父子ng-repeat的访问索引
我想使用父列表(foos)的索引作为子列表(foos.bars)中的函数调用的参数。
我发现有人推荐使用$ parent。$ index,但$index
不是$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>
我的示例代码是正确的,这个问题是在我的实际代码中的其他东西。 不过,我知道很难find这样的例子,所以我回答它,以防别人正在寻找。
<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>
根据ng-repeat docs http://docs.angularjs.org/api/ng.directive:ngRepeat ,可以将键或数组索引存储在您select的variables中。 (indexVar, valueVar) in values
所以你可以写
<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>
上一级还是挺干净的,用$ parent。$ index但是有好几个家长起来,事情可能会变得杂乱无章。
注意: $index
将继续在每个范围定义,它不会被fIndex
所取代。
看看我对类似问题的回答 。
通过别名$index
我们不必写出像$parent.$parent.$index
这样疯狂的东西。
更优雅的解决schemewhan $parent.$index
正在使用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
您还可以通过以下代码获得对父级索引的控制
$parent.$parent.$index
你可以简单地使用use $ parent。$ index。父级代表父级重复对象的对象。