如何使用NG-重复类似的Javascript中?
例:
<div ng-repeat="4">Text</div>
我想用ng-repeat重复4次,但是我该怎么做呢?
如何使用NG-重复类似的Javascript中?
例:
<div ng-repeat="4">Text</div>
我想用ng-repeat重复4次,但是我该怎么做呢?
items
..?
Answers:
Angular带有limitTo:limit过滤器,它支持限制前x个项目和后x个项目:
<div ng-repeat="item in items|limitTo:4">{{item}}</div>
items
这是我能想到的最简单的解决方法。
<span ng-repeat="n in [].constructor(5) track by $index">
{{$index}}
</span>
这是一个Plunker示例。
Error: [$parse:isecfld]
您可以在javascript数组对象中使用slice方法
<div ng-repeat="item in items.slice(0, 4)">{{item}}</div>
短n甜
item in items|limitTo:4
在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>
t in [1,2,3,4]
或t in 'aaaa'
等等:)
[1,2,3,4]
。这是一个多么糟糕的解决方案
@mpm给出的答案不起作用,它给出了错误
不允许在转发器中重复。使用“跟踪依据”表达式指定唯一键。中继器:{0},重复密钥:{1}
为了避免这种情况
ng-repeat =“ t in getTimes(4)”
使用
通过$ index跟踪
像这样
在getTimes(4)中<div ng-repeat =“ t由$ 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,如其他答案所述。