迭代ng-在AngularJs中只重复X次
如何在JavaScript中使用ng-repeat?
例:
<div ng-repeat="4">Text</div>
我想重复ng-repeat 4次,但是我怎么做呢?
Angular带有一个limitTo:限制filter,它支持限制前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>
简短甜美
在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>
由@mpm给出的答案是行不通的,它给出了错误
不允许在中继器中复制。 使用“追踪”expression式来指定唯一的键。 中继器:{0},重复键:{1}
为了避免这一点
ng-repeat =“getTimes(4)”
使用
跟踪$索引
喜欢这个
<div ng-repeat =“t in getTimes(4)track by $ index”> TEXT </ div>
要重复7次,请尝试使用长度= 7的数组,然后通过 $ index进行跟踪 :
<span ng-repeat="a in (((b=[]).length=7)&&b) track by $index" ng-bind="$index + 1 + ', '"></span>
b=[]
创build一个空的数组«B»,
.length=7
将其大小设置为“7”,
&&b
让新的arrays«B»可用于重复,
track by $index
其中«$ index»是迭代的位置。
ng-bind="$index + 1"
从1开始显示。
重复X次:
用X代替7 。
这里的所有答案似乎都假定项目是一个数组。 但是,在AngularJS中,这也可能是一个对象。 在这种情况下,既不使用limitTo也不使用array.slice进行过滤。 作为一种可能的解决scheme,如果您不介意丢失对象键,则可以将对象转换为数组。 下面是一个filter的例子来做到这一点:
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,如其他答案中所述。