AngularJs:ngRepeat增量不是1

3
在AngularJs中,是否有一种方式可以按照除1以外的递增方式增加值,例如下面的C# Razor示例:
@for(var i = 0; i < list.length; i+=3)
{
    <p>Value: listOfObjects[i].value</p>
}

不,你必须遍历一个数组,例如[0, 2, 4]。 - George Kagan
好问题,我认为你不能使用ngRepeat来做到这一点。 - Harry
4个回答

1

你可以使用这种结构:

<div ng-repeat="n in nfg">
  <span ng-if="!($index %= 3)">Some text here, each 3rd loop</span>
</div>

我希望你能在ng-repeat中使用过滤器,但我无法使其正常工作。

1
我假设您想在数组集合上进行迭代,并需要在某处使用其当前索引。在这种情况下,您可以使用{{$index}}ng-repeat已经内置了它,$index将为您提供元素的当前索引,如果它是一个数组。您可以使用条件$index%3==0ng-if一起使用。 控制器
$scope.listOfObjects = [0, 1, 2, 3];

标记语言

<div ng-repeat="item in listOfObjects" ng-if="$index%3==0">
   {{item}}
</div>

1
这不是问题的答案,OP想要在ngRepeat中迭代每个第n个元素,而不是在绑定中增加索引。 - maurycy
@maurycy 检查更新,抱歉我错过了那部分 :( 感谢你的提醒。 - Pankaj Parkar

1
不,您不能直接这样做,但是您可以在此基础上进行一些小的变通处理:
<div ng-repeat="item in listOfObjects">
    <div ng-if="$index % 3 == 0">
       {{item}}
    </div>
</div>

1
很遗憾,ngRepeat没有这个功能,你可以使用ngIf实现,但我个人更喜欢过滤器,因为它们是无状态的。

JS

.filter('everyNth', function() {
  return function(arrayOfElements, nth) {
    var result = []
    for (var i = 0; i < arrayOfElements.length; i += nth) {
      result.push(arrayOfElements[i])
    }
    return result
  }
})

HTML

<div ng-repeat="item in items | everyNth:3">

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接