88

如何在 Javascript 中使用 ng-repeat 之类的?

例子:

<div ng-repeat="4">Text</div>

我想用 ng-repeat 迭代 4 次,但我该怎么做呢?

4

7 回答 7

343

Angular 带有一个 limitTo:limit 过滤器,它支持限制前 x 个项目和最后 x 个项目:

<div ng-repeat="item in items|limitTo:4">{{item}}</div>
于 2013-07-19T00:08:11.887 回答
65

这是我能想到的最简单的解决方法。

<span ng-repeat="n in [].constructor(5) track by $index">
{{$index}}
</span>

这是一个Plunker 示例。

于 2015-09-11T08:27:52.670 回答
50

您可以在 javascript 数组对象中使用 slice 方法

<div ng-repeat="item in items.slice(0, 4)">{{item}}</div>

短而甜

于 2013-02-22T12:52:58.237 回答
39

在 html 中:

<div ng-repeat="t in getTimes(4)">text</div>

在控制器中:

$scope.getTimes=function(n){
     return new Array(n);
};

http://plnkr.co/edit/j5kNLY4Xr43CzcjM1gkj

编辑 :

使用 angularjs > 1.2.x

<div ng-repeat="t in getTimes(4) track by $index">TEXT</div>
于 2013-01-07T14:41:14.383 回答
13

@mpm 给出的答案不起作用,它给出了错误

不允许在转发器中重复。使用“track by”表达式指定唯一键。中继器:{0},重复键:{1}

为了避免这种情况

ng-repeat="t in getTimes(4)"

采用

按 $index 跟踪

像这样

<div ng-repeat="t in getTimes(4) track by $index">TEXT</div>

于 2013-11-28T18:10:16.570 回答
10

要重复7次,请尝试使用length=7的数组,然后通过$index对其进行跟踪

<span ng-repeat="a in (((b=[]).length=7)&&b) track by $index" ng-bind="$index + 1 + ', '"></span>

b=[]创建一个空数组«b»,
.length=7将其大小设置为«7»,
&&b让新数组«b»可用于ng-repeat,
track by $index其中«$index»是迭代的位置。
ng-bind="$index + 1"从 1 开始显示。

要重复X次:
只需将7替换为X

于 2015-02-05T10:10:06.633 回答
3

这里的所有答案似乎都假设items是一个数组。然而,在 AngularJS 中,它也可能是一个对象。在这种情况下,使用 limitTo 和 array.slice 进行过滤都不起作用。作为一种可能的解决方案,如果您不介意丢失对象键,则可以将对象转换为数组。这是执行此操作的过滤器示例:

myFilter.filter('obj2arr', function() {
    return function(obj) {
        if (typeof obj === 'object') {
            var arr = [], i = 0, key;
            for( key in obj ) {
                arr[i] = obj[key];
                i++;
            }
            return arr;
        }
        else {
            return obj;
        }

    };
});

一旦它是一个数组,请使用 slice 或 limitTo,如其他答案中所述。

于 2013-12-06T11:25:09.600 回答