迭代ng-在AngularJs中只重复X次



如何在Javascript中使用像一样的ng-repeat ?

的例子:

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

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

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

<div ng-repeat="item in items|limitTo:4">{{item}}</div>

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

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

下面是一个Plunker的例子

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

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

短n甜

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

,在控制器中:

$scope.getTimes=function(n){
     return new Array(n);
};
http://plnkr.co/edit/j5kNLY4Xr43CzcjM1gkj

编辑:

with angularjs> 1.2.x

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

@mpm给出的答案不工作,它给出错误

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

避免使用

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

使用

跟踪$index

这样的

&LT;div -repeat="t in getTimes(4) track by美元指数"在TEXT&LT;/div&GT;

重复 7 的时候,试着使用一个数组长度= 7 ,然后追踪, , 美元指数:

<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

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

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,如其他答案所述。

最新更新