提问者:小点点

如何使用ng-重复定义的次数,而不是重复数组?


有没有一种方法来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>

共3个答案

匿名用户

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);
    };
};