是否有一种方法可以ng-repeat定义的次数,而不是总是要迭代一个数组?

例如,下面我希望列表项显示5次,假设为$scope。数字等于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>

当前回答

我正在创建一个可重用的指令,其中最大数字将来自另一个ng-repeat。这是对最佳投票答案的编辑。

只需将控制器上的代码更改为这个-

$scope.getNumber = function(num) {
    var temp = [];
    for(var j = 0; j < num; j++){
        temp.push(j)
    }
    return temp; 
}

这将返回一个具有指定迭代次数的新数组

其他回答

简单的方法:

    public defaultCompetences: Array<number> = [1, 2, 3];

在组件/控制器中,然后:

    <div ng-repeat="i in $ctrl.defaultCompetences track by $index">

这段代码来自我的typescript项目,但可以重新安排到纯javascript

你可以这样做:

<div ng-repeat="i in [1, 2, 3, 4]">
  ...
</div>

2021年的版本

*ngFor="let x of [].constructor(number)"

下面是angular 1.2.x的答案

基本上是一样的,只是稍微修改了ng-repeat

<li ng-repeat="i in getNumber(myNumber) track by $index">

这是小提琴:http://jsfiddle.net/cHQLH/153/

这是因为angular 1.2不允许在指令中重复值。这意味着如果您尝试执行以下操作,将会得到一个错误。

<li ng-repeat="x in [1,1,1]"></li>

在Ivan的第一个答案上展开一点,只要字符是唯一的,你可以使用一个字符串作为集合,而不使用track by语句,所以如果用例少于10个数字(就像在问题中那样),我将简单地这样做:

<ul>
   <li ng-repeat="n in '12345'"><span>{{n}}</span></li>
</ul>

当然,这有点古怪,但看起来足够简单,也不是特别令人困惑。