Way to ng-repeat defined number of times instead of repeating over array?

angularjs, angularjs-ng-repeat, html, javascript

Solution

Update (9/25/2018)

Newer versions of AngularJS (>= 1.3.0) allow you to do this with only a variable (no function needed):

<li ng-repeat="x in [].constructor(number) track by $index">
    <span>{{ $index+1 }}</span>
</li>
$scope.number = 5;

This was not possible at the time the question was first asked. Credit to @Nikhil Nambiar from his answer below for this update

Original (5/29/2013)

At the moment, `ng-repeat` only accepts a collection as a parameter, but you could do this:

<li ng-repeat="i in getNumber(number)">
    <span>{{ $index+1 }}</span>
</li>

And somewhere in your controller:

$scope.number = 5;
$scope.getNumber = function(num) {
    return new Array(num);   
}

This would allow you to change `$scope.number` to any number as you please and still maintain the binding you're looking for.

EDIT (1/6/2014) -- Newer versions of AngularJS (>= 1.1.5) require `track by $index`:

<li ng-repeat="i in getNumber(number) track by $index">
    <span>{{ $index+1 }}</span>
</li>

Here is a fiddle with a couple of lists using the same `getNumber` function.

Problem

Is there a way to `ng-repeat` a defined number of times instead of always having to iterate over an array? For example, below I want the list item to show up 5 times assuming `$scope.number` equal to 5 in addition incrementing the number so each list item increments like 1, 2, 3, 4, 5 Desired result: ``` <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> ```

Original source

Related problems