ng-repeat指定起始索引

Fed*_*oli 49 angularjs angularjs-ng-repeat

如何指定ng-repeat指令将开始而不是零的索引?

我有一组结果,我只需要指定起始值,它与零不同.

use*_*281 56

无需编写任何代码,angular已使用现有的内置limitTo过滤器完成此操作.只需使用负限制.从limit论证的文档:

返回的数组或字符串的长度.如果限制数为正,则复制源数组/字符串开头的限制项数.如果数字为负数,则复制源数组/字符串末尾的限制项数.如果限制超过array.length,则将限制该限制.如果未定义limit,则输入将保持不变.

所以你会在模板中使用它:

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

offset你的起始指数在哪里?参见样本plunker.

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

  • 最优雅的解决方案!谢谢! (2认同)

Cha*_*pet 39

答案似乎很老了,

因为angular 1.4.0,limitTo过滤器有两个参数

limitTo: (limit) : (begin)

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

这似乎是一个非常有效的解决方案而不是使用两个不同的过滤器

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

  • 自AngualrJS v1.4 +起,这应该是选定的答案。 (2认同)

Ema*_*lha 37

您可以创建过滤器

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

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

<div ng-repeat="item in items | startFrom : 2">{{item.Name}}</div>
Run Code Online (Sandbox Code Playgroud)


Omr*_*ron 31

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

<div ng-repeat="item in items" ng-if="$index >= myIndex">
   {{item.Name}}
</div>
Run Code Online (Sandbox Code Playgroud)