Angular ng-repeat $index 在 mozilla firefox 上的 ng-if 指令中不起作用

Angular ng-repeat $index doesn't work in ng-if directive on mozilla firefox

我正在使用 ng-repeat 来显示数组中的项目。对于每个项目,我检查 $index 是否满足条件。

在 chrome 甚至 Internet Explorer 中,这都能完美无缺地运行。但是,在 Mozilla 中,似乎仅在 ng-repeat 结束后才更新 $index。因此,条件在很多时候都不起作用。这种情况的一个例子是:

<div class="active item" data-slide-number="{{$index}}" ng-repeat="img in attraction.Images" ng-if="img.first == true">
<img ng-src="{{IMG(img.FileName + img.FieExtention)}}" class="img img-responsive">
</div>

针对Lorenzo的回答,我也试过了

<div class="active item" data-slide-number="{{$index}}" ng-repeat="img in attraction.Images" ng-if="$parent.$index == 0">
    <img ng-src="{{IMG(img.FileName + img.FieExtention)}}" class="img img-responsive">
</div>
<div class="item" data-slide-number="{{$index}}" ng-repeat="img in attraction.Images" ng-if="$parent.$index > 0">
    <img ng-src="{{IMG(img.FileName + img.FieExtention)}}" class="img img-responsive">
</div>

我快要发疯了...请帮忙

ng-if 创建一个 子范围

要访问 $index,您需要使用 $parent.$index 访问 ng-if 的父范围(因此 ng-repeat 的范围)

在同一个元素上使用 ng-repeat 和 ng-if 不是一个好主意。 两者都创建自己的范围,因此不建议这样做。

一般来说,尽可能避免在同一元素上结合使用其他指令和 ng-repeat 是个好主意。 您应该使用 ng-repeat 元素创建一个子元素,并将其他指令放在该子元素上。