ngRepeat中的自定义$索引名称

时间:2015-12-31 04:11:52

标签: javascript angularjs

我有一个用JADE编写的代码,它使用两个ngRepeat指令,如下所示:

table
    tr(ng-repeat="item in items track by $index")
       td: .dropdown
           button.btn.btn-default(data-toggle="dropdown") Choose One
           ul.dropdown-menu
               li(ng-repeat="option in item.options")
                  // I need this $index's value comes from the first ng-repeat above
                  a(ng-click="changeOption(item, option, $index)") 

标记<a>ng-click指令,可以调用changeOption(item, option, $index)

问题是我需要来自$index函数中FIRST ng-repeat指令的changeOption()而不是第二个$index指令。我可以将.filter更改为其他名称或将其分配给另一个变量,以便我可以在第二次迭代中访问它吗?

谢谢

2 个答案:

答案 0 :(得分:4)

您可以使用ng-init(我以HTML格式回答):

<tr ng-repeat="item in items track by $index" ng-init="firstIndex = $index">
    <!-- Then use it here -->
    <a ng-click="changeOption(item, option, firstIndex)"></a>
</tr>

答案 1 :(得分:4)

无需使用ng-init,使用ng-repeat的表达式支持键/值访问权限。当您仍在使用数组时,它们将是实际索引。

docs - https://docs.angularjs.org/api/ng/directive/ngRepeat

tr(ng-repeat="(t1, category) in vc.listData track by $index"
   td: .dropdown
       button.btn.btn-default(data-toggle="dropdown") Choose One
       ul.dropdown-menu
           li(ng-repeat="(t2, option) in item.options")
              a(ng-click="changeOption(item, option, t1)")