AngularJS:在嵌套循环内按 $index 进行 ng-repeat 跟踪

问题描述 投票:0回答:2

我需要第二个 $index 来用于我的嵌套 ng-repeat 循环。我应该如何以及在哪里放置它?

AngularJS 网站

可以使用 ngInit 为这些属性创建别名。这 例如,当嵌套 ngRepeats 时可能很有用。

<div ng-repeat="person in persons track by $index">
    <div ng-repeat="something in array track by $index2"> <!-- where to init this and how to manage it?-->

如果我再次使用 $index ,它似乎可以工作,但我不确定这是正确的事情吗? 我确信有一种简单且正确的方法可以做到这一点,我只是找不到示例。

谢谢

angularjs angularjs-ng-repeat
2个回答
152
投票

$index
将引用最里面的
ngRepeat
范围内的索引,所以如果这是你需要的,你可以直接使用它。

文档描述的是您需要访问父级

$index
中的
ngRepeat
的场景。您可以通过多种方式获得它:一种是使用
$parent
,另一种是使用
ngInit
,如 Angular 文档所建议的那样。这是一个例子...

<li ng-repeat="thing in things" ng-init="parentIndex = $index">
    {{ $index }}
    <ul>
        <li ng-repeat="value in thing.values">
            {{ value }} 
            {{ $index }} <!-- inner $index -->
            {{ $parent.$index }} <!-- parent $index -->
            {{ parentIndex }} <!-- also parent $index -->
        </li>
    </ul>
</li>

小提琴


0
投票

虽然

ng-init
是一种方法,但如已接受的答案所示,如果您打算操作数组、删除元素或在任意索引中添加元素,则上述
parentIndex
方法将无法很好地工作。

我更喜欢用

$parent.$index
的方式来引用实际的父索引。不过要小心,如果内部
ng-repeat
也有
ng-if
,您会看到
$parent.$index
始终与
$index
相同,并且为了解决这个问题,应该使用
$parent.$parent.$index
- 有点难看,但它有效。

© www.soinside.com 2019 - 2024. All rights reserved.