如何在 Javascript 中使用 ng-repeat 之类的?
例子:
<div ng-repeat="4">Text</div>
我想用 ng-repeat 迭代 4 次,但我该怎么做呢?
如何在 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>
短而甜
在 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 给出的答案不起作用,它给出了错误
不允许在转发器中重复。使用“track by”表达式指定唯一键。中继器:{0},重复键:{1}
为了避免这种情况
ng-repeat="t in getTimes(4)"
采用
按 $index 跟踪
像这样
<div ng-repeat="t in getTimes(4) track by $index">TEXT</div>
要重复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。
这里的所有答案似乎都假设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,如其他答案中所述。