如何在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
<div -repeat="t in getTimes(4) track by美元指数"在TEXT</div>
重复 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,如其他答案所述。