有没有一种方法来ng-repeat
一个定义的次数,而不是总是迭代一个数组?
例如,在下面,我希望列表项显示5次,假设$scope.number
等于5,并且增加数字,这样每个列表项就会增加1,2,3,4,5
所需结果:
<ul>
<li><span>1</span></li>
<li><span>2</span></li>
<li><span>3</span></li>
<li><span>4</span></li>
<li><span>5</span></li>
</ul>
AngularJS的较新版本(>=1.3.0)允许您只使用一个变量(不需要函数)就可以完成此操作:
<li ng-repeat="x in [].constructor(number) track by $index">
<span>{{ $index+1 }}</span>
</li>
$scope.number = 5;
在第一次提出这个问题时,这是不可能的。归功于@Nikhil Nambiar,从他下面的回答中获得了这次更新
目前,ng-repeat
只接受集合作为参数,但您可以这样做:
<li ng-repeat="i in getNumber(number)">
<span>{{ $index+1 }}</span>
</li>
在控制器的某个地方:
$scope.number = 5;
$scope.getNumber = function(num) {
return new Array(num);
}
这将允许您将$scope.number
更改为任意数字,并且仍然保持您要查找的绑定。
编辑(1/6/2014)--较新版本的AngularJS(>=1.1.5)需要按$index
跟踪:
<li ng-repeat="i in getNumber(number) track by $index">
<span>{{ $index+1 }}</span>
</li>
下面是使用相同的getNumber
函数对几个列表进行的操作。
您可以这样做:
<div ng-repeat="i in [1, 2, 3, 4]">
...
</div>
下面是一个如何实现这一点的示例。请注意,我是从ng-repeat文档中的一个注释中得到启发的:http://jsfiddle.net/digitalzebra/wnwy6/
请注意ng-repeat指令:
<div ng-app>
<div ng-controller="TestCtrl">
<div ng-repeat="a in range(5) track by $index">{{$index + 1}}</div>
</div>
</div>
这里是控制器:
function TestCtrl($scope) {
$scope.range = function(n) {
return new Array(n);
};
};