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

时间:2016-02-10 10:54:21

标签: javascript angularjs angularjs-ng-repeat angular-ng-if

我正在使用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>

在回答洛伦佐的回答时,我也试过了

<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>

我差点儿疯了......请帮忙

2 个答案:

答案 0 :(得分:2)

ng-if创建子范围

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

答案 1 :(得分:1)

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

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