AngularJS Para Loop com Números e Amplificadores; Faixas

A Angular fornece algum suporte para um loop usando números dentro de suas diretivas HTML:

<div data-ng-repeat="i in [1,2,3,4,5]">
  do something
</div>

Mas se a sua variável de escopo inclui um intervalo que tem um número dinâmico, então você precisará criar uma matriz vazia cada vez.

No controlador

var range = [];
for(var i=0;i<total;i++) {
  range.push(i);
}
$scope.range = range;

No HTML

<div data-ng-repeat="i in range">
  do something
</div>

Isto funciona, mas é desnecessário uma vez que ganhámos'não estamos a usar o range array de forma alguma dentro do loop. Alguém sabe como definir um range ou um regular para o valor min/max?

Algo do género:

<div data-ng-repeat="i in 1 .. 100">
  do something
</div>
Solução

Eu afinei [esta resposta][1] um pouco e cheguei a [este violino][2].

Filtro definido como:


var myApp = angular.module('myApp', []);
myApp.filter('range', function() {
  return function(input, total) {
    total = parseInt(total);

    for (var i=0; i
Comentários (9)

Eu criei uma sintaxe um pouco diferente que me convém um pouco mais e acrescenta um limite inferior opcional também:


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 
Comentários (4)

Para os novos a angularjs. O índice pode ser obtido usando $index.

Por exemplo:

<div ng-repeat="n in [] | range:10">
    do something number {{$index}}
</div>

Que irá, quando você'estiver usando o Gloopy's handy filter, print:
fazer algo número 0
fazer algo número 1
fazer algo número 2
fazer algo número 3
fazer algo número 4
fazer algo número 5
fazer algo número 6
fazer algo número 7
fazer algo número 8
fazer algo número 9

Comentários (3)