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?
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?
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>
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.
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
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>
t in [1,2,3,4]ou t in 'aaaa' etc :)
[1,2,3,4].. Que solução desanimadora esta
A resposta dada por @mpm não está funcionando dá o erro
Duplicatas em um repetidor não são permitidas. Use a expressão 'rastrear por' para especificar chaves exclusivas. Repetidor: {0}, chave duplicada: {1}
Para evitar isso junto com
ng-repeat = "t em getTimes (4)"
usar
rastrear por $ index
como isso
<div ng-repeat = "t in getTimes (4) track by $ index"> TEXTO </div>
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>
b=[]crie um Array «b» vazio,
.length=7defina seu tamanho para «7»,
&&bdeixe o novo Array «b» disponível para repetição de ng,
track by $indexonde «$ index» é a posição de iteração.
ng-bind="$index + 1"exibição começando em 1.
Para repetir X vezes:
basta substituir 7 por X .
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.