<tr ng-repeat="materialOffer in Vm.materialoffers track by materialOffer.id"
    ng-if="!materialOffer.containMaterial && $index >= startIndex && $index < endIndex">
</tr>


我有一个名为materialoffers的对象数组。数组的每个元素都是一个对象,其属性名为containMaterial。一些对象具有此属性null,而另一些具有它作为对象。我只想显示在containMaterial属性中具有对象的那些对象。我还使用$indexstartIndexendIndex进行分页。我遇到的问题是$index也在跟踪具有containMaterial属性null的那些对象,例如,数组是这样的

[{
  "object1": {
    containMaterial:obejct;
  }
}, {
  "object2": {
    containMaterial:obejct;
  }
}, {
  "object3": {
    containMaterial:Null;
  }
}, {
  "object4": {
    containMaterial:obejct;
  }
}]


遍历object4时,$index为3,而应为2,因为对象已被ng-if隐藏。

最佳答案

为什么不只是预先过滤?

在您的HTML中:

<tr ng-repeat="materialOffer in Vm.filteredMaterialOffers() track by materialOffer.id"
    ng-if="$index >= startIndex && $index < endIndex">
</tr>


在您的JS中:

$scope.Vm.filteredMaterialOffers = function () {
    Vm.materialoffers.filter(function (x) {
        return x.containMaterial ;
    });
};

关于javascript - $ index是被ng-if隐藏的跟踪元素,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/41649734/

10-09 14:42