Como posso usar ng-repeat como para em JavaScript?
exemplo:
<div ng-repeat="4">Text</div>
Eu quero iterar com ng-repeat 4 vezes, mas como posso fazer isso?
javascript
angularjs
Vural
fonte
fonte
items
..?Respostas:
O Angular vem com um filtro limitTo: limit, ele suporta a limitação dos primeiros x itens e dos últimos x itens:
<div ng-repeat="item in items|limitTo:4">{{item}}</div>
fonte
items
Esta é a solução alternativa mais simples que eu poderia pensar.
<span ng-repeat="n in [].constructor(5) track by $index"> {{$index}} </span>
Aqui está um exemplo do Plunker.
fonte
Error: [$parse:isecfld]
Você pode usar o método de fatia no objeto de matriz javascript
<div ng-repeat="item in items.slice(0, 4)">{{item}}</div>
Curto e doce
fonte
item in items|limitTo:4
no html:
<div ng-repeat="t in getTimes(4)">text</div>
e no controlador:
$scope.getTimes=function(n){ return new Array(n); };
http://plnkr.co/edit/j5kNLY4Xr43CzcjM1gkj
EDITAR:
com angularjs> 1.2.x
<div ng-repeat="t in getTimes(4) track by $index">TEXT</div>
fonte
t in [1,2,3,4]
out in 'aaaa'
etc :)[1,2,3,4]
.. Que solução desanimadora estaA resposta dada por @mpm não está funcionando dá o erro
Para evitar isso junto com
usar
como isso
fonte
Para repetir 7 vezes, tente usar uma matriz com comprimento = 7 e rastreá- la por $ index :
<span ng-repeat="a in (((b=[]).length=7)&&b) track by $index" ng-bind="$index + 1 + ', '"></span>
Para repetir X vezes:
basta substituir 7 por X .
fonte
Todas as respostas aqui parecem assumir que os itens são uma matriz. No entanto, no AngularJS, pode muito bem ser um objeto. Nesse caso, nem a filtragem com limitTo nem array.slice funcionará. Como uma solução possível, você pode converter seu objeto em um array, se não se importar em perder as chaves do objeto. Aqui está um exemplo de um filtro para fazer exatamente isso:
myFilter.filter('obj2arr', function() { return function(obj) { if (typeof obj === 'object') { var arr = [], i = 0, key; for( key in obj ) { arr[i] = obj[key]; i++; } return arr; } else { return obj; } }; });
Uma vez que é uma matriz, use slice ou limitTo, conforme declarado em outras respostas.
fonte