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
参数,所以你不需要使用一个负面的limit
但begin
是不可用的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
我会创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