Angular fornisce un certo supporto per un ciclo for usando i numeri all'interno delle sue direttive HTML:
<div data-ng-repeat="i in [1,2,3,4,5]">
do something
</div>
Ma se la tua variabile di ambito include un intervallo che ha un numero dinamico, allora dovrai creare un array vuoto ogni volta.
Nel controllore
var range = [];
for(var i=0;i<total;i++) {
range.push(i);
}
$scope.range = range;
Nell'HTML
<div data-ng-repeat="i in range">
do something
</div>
Questo funziona, ma non è necessario dato che non useremo affatto l'array range all'interno del ciclo. Qualcuno conosce l'impostazione di un range o di un regolare per il valore min/max?
Qualcosa come:
<div data-ng-repeat="i in 1 .. 100">
do something
</div>
Ho modificato un po' questa risposta e sono arrivato a [questo fiddle][2].
Filtro definito come:
var myApp = angular.module('myApp', []);
myApp.filter('range', function() {
return function(input, total) {
total = parseInt(total);
for (var i=0; i<total; i++) {
input.push(i);
}
return input;
};
});
Con la ripetizione usata in questo modo:
<div ng-repeat="n in [] | range:100">
do something
</div>
Ho trovato una sintassi leggermente diversa che mi soddisfa un po' di più e aggiunge anche un limite inferiore opzionale:
myApp.filter('makeRange', function() {
return function(input) {
var lowBound, highBound;
switch (input.length) {
case 1:
lowBound = 0;
highBound = parseInt(input[0]) - 1;
break;
case 2:
lowBound = parseInt(input[0]);
highBound = parseInt(input[1]);
break;
default:
return input;
}
var result = [];
for (var i = lowBound; i <= highBound; i++)
result.push(i);
return result;
};
});
che si può usare come
<div ng-repeat="n in [10] | makeRange">Do something 0..9: {{n}}</div>
o
<div ng-repeat="n in [20, 29] | makeRange">Do something 20..29: {{n}}</div>
Per quelli nuovi di angularjs. L'indice può essere ottenuto usando $index.
Per esempio:
<div ng-repeat="n in [] | range:10">
do something number {{$index}}
</div>
Che, quando si usa il comodo filtro di Gloopy, stamperà:
fai qualcosa numero 0
fai qualcosa numero 1
fai qualcosa numero 2
fare qualcosa numero 3
fare qualcosa numero 4
fare qualcosa numero 5
fare qualcosa numero 6
fare qualcosa numero 7
fare qualcosa numero 8
fare qualcosa numero 9