ng-repeat指定一个起始索引

我如何指定一个ng-repeat指令要开始而不是零的索引?

我有一组结果,我只需要指定一个不同于零的开始的结果。

无需编写任何代码,angular已经使用现有的内置的limitTofilter来完成这项工作。 只需使用负面限制。 从limit参数的文档:

返回的数组或string的长度。 如果限制数是正数,则会复制源数组/string开始处的项数限制。 如果数字是负数,则会复制源数组/string末尾的项目数量限制 。 如果超出array.length,限制将被修剪。 如果限制未定义,则input将被返回不变。

所以你可以像这样在模板中使用它:

 <ul> <li data-ng-repeat="i in list | limitTo: (offset - list.length)">{{i}}</li> </ul> 

其中offset是您的开始索引。 看到样品plunker 。

有一个可选的begin参数,所以你不需要使用一个负面的limitbegin是不可用的angular度v1.4之前,所以我坚持在我的例子中的负limit

你可以创build一个filter

 app.filter('startFrom', function() { return function(input, start) { if(input) { start = +start; //parse to int return input.slice(start); } return []; } }); 

然后你只是在ng-repeat上使用它:

 <div ng-repeat="item in items | startFrom : 2">{{item.Name}}</div> 

假设你有一个items列表,你可以这样做:

 <div ng-repeat="item in items" ng-if="$index >= myIndex"> {{item.Name}} </div> 

答案似乎相当古老,

因为angular1.4.0 limitTofilter需要两个参数

limitTo: (limit) : (begin)

你可以说ng-repeat="item in list | limitTo:50:0"

这似乎是一个很有效的解决scheme,而不是使用两个不同的filter

https://code.angularjs.org/1.4.0/docs/api/ng/filter/limitTo

我会创build一个返回欲望子数组的函数。 这可以进入控制器或指令的链接function。

 <span ng-repeat="item in getSubArray(0, 4)">...</span> 

和function

 $scope.getSubArray = function (start, end) { return array.slice(start, end); } 

这对我工作:

 <element ng-repeat="round in view.rounds track by $index"> <span>{{$index + 1}}</span> </element> 

这可能会诀窍…

 <div ng-repeat="(i, item) in items"> <p>{{i+1}}</p> </div> 

这是我正在寻找的结果:

 angular.module('starter.filters', []).filter('startFrom', function() { return function(input, start) { if(input) { start = +start; //parse to int appended = input.slice(0,start); initialArray = input.slice(start); finalArray= initialArray.concat(appended); return finalArray; } return []; } }); 

谢谢@emanuel