Come posso usare ng-repeat come per in Javascript?
esempio:
<div ng-repeat="4">Text</div>
Voglio iterare con ng-repeat 4 volte ma come posso farlo?
Come posso usare ng-repeat come per in Javascript?
esempio:
<div ng-repeat="4">Text</div>
Voglio iterare con ng-repeat 4 volte ma come posso farlo?
items..?
Risposte:
Angular viene fornito con un filtro limitTo: limit, supporta la limitazione dei primi x elementi e degli ultimi x elementi:
<div ng-repeat="item in items|limitTo:4">{{item}}</div>
items
Questa è la soluzione più semplice a cui potessi pensare.
<span ng-repeat="n in [].constructor(5) track by $index">
{{$index}}
</span>
Ecco un esempio di Plunker.
Error: [$parse:isecfld]
È possibile utilizzare il metodo slice nell'oggetto array javascript
<div ng-repeat="item in items.slice(0, 4)">{{item}}</div>
Breve n dolce
item in items|limitTo:4
nell'html:
<div ng-repeat="t in getTimes(4)">text</div>
e nel controller:
$scope.getTimes=function(n){
return new Array(n);
};
http://plnkr.co/edit/j5kNLY4Xr43CzcjM1gkj
MODIFICARE :
con angularjs> 1.2.x
<div ng-repeat="t in getTimes(4) track by $index">TEXT</div>
t in [1,2,3,4]o t in 'aaaa' ecc :)
[1,2,3,4].. Che soluzione triste questa
La risposta data da @mpm non funziona dà l'errore
Non sono consentiti duplicati in un ripetitore. Usa l'espressione "track by" per specificare chiavi univoche. Ripetitore: {0}, chiave duplicata: {1}
Per evitare questo insieme a
ng-repeat = "t in getTimes (4)"
uso
traccia per $ index
come questo
<div ng-repeat = "t in getTimes (4) track by $ index"> TEXT </div>
Per ripetere 7 volte, tenta di utilizzare un array con una lunghezza = 7 , quindi monitorare esso da $ index :
<span ng-repeat="a in (((b=[]).length=7)&&b) track by $index" ng-bind="$index + 1 + ', '"></span>
b=[]crea un array vuoto «b»,
.length=7imposta la sua dimensione a «7»,
&&blascia che il nuovo array «b» sia disponibile per ng-repeat,
track by $indexdove «$ index» è la posizione dell'iterazione.
ng-bind="$index + 1"display a partire da 1.
Per ripetere X volte:
basta sostituire 7 da X .
Tutte le risposte qui sembrano presumere che gli elementi siano un array. Tuttavia, in AngularJS, potrebbe anche essere un oggetto. In tal caso, né il filtraggio con limitTo né array.slice funzionerà. Come una possibile soluzione, puoi convertire il tuo oggetto in un array, se non ti dispiace perdere le chiavi dell'oggetto. Ecco un esempio di un filtro per fare proprio questo:
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;
}
};
});
Una volta che è un array, usa slice o limitTo, come indicato in altre risposte.