我的 HTML 代码
<div> <ul> <li ng-repeat='parentItem in arr1'> <div ng-repeat='childItem in arr2'> {{ $parent.$index }} , {{ $index }} </div> </li> </ul> </div>
控制器内的 Javascript 代码
$scope.arr1 = [1,2]; $scope.arr2 = [1,2];
这段代码给了我正确的答案
0, 0 0, 1 1, 0, 1, 1
但是如果我在子循环中使用ng-if="true"
那么它会给我错误的答案
<div> <ul> <li ng-repeat='parentItem in arr1'> <div ng-repeat='childItem in arr2' ng-if="true"> {{ $parent.$index }} , {{ $index }} </div> </li> </ul> </div>
0, 0 1, 1 0, 0 1, 1
这是错误的。 它将父索引更改为子索引
请修复这个问题
最有用的评论
这在 Angular 中不是问题。 发生这种情况(如文档所述),因为
ngIf
创建了一个新的作用域,所以$parent
不引用外部ngRepeat
的作用域。这就是为什么在这里使用
$parent
不是一个好习惯。 您可以/应该使用ngInit
来创建父索引的别名,如下所示:演示