Comment puis-je utiliser ng-repeat comme pour Javascript?
exemple:
<div ng-repeat="4">Text</div>
Je veux itérer avec ng-repeat 4 fois, mais comment puis-je le faire?
Comment puis-je utiliser ng-repeat comme pour Javascript?
exemple:
<div ng-repeat="4">Text</div>
Je veux itérer avec ng-repeat 4 fois, mais comment puis-je le faire?
items
..?
Réponses:
Angular est livré avec un filtre limitTo: limit, il prend en charge la limitation des x premiers éléments et des x derniers éléments:
<div ng-repeat="item in items|limitTo:4">{{item}}</div>
items
C'est la solution de contournement la plus simple à laquelle je puisse penser.
<span ng-repeat="n in [].constructor(5) track by $index">
{{$index}}
</span>
Voici un exemple de Plunker.
Error: [$parse:isecfld]
Vous pouvez utiliser la méthode slice dans un objet de tableau javascript
<div ng-repeat="item in items.slice(0, 4)">{{item}}</div>
Court n doux
item in items|limitTo:4
dans le html:
<div ng-repeat="t in getTimes(4)">text</div>
et dans le contrôleur:
$scope.getTimes=function(n){
return new Array(n);
};
http://plnkr.co/edit/j5kNLY4Xr43CzcjM1gkj
ÉDITER :
avec 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]
.. Quelle triste solution celle-ci
La réponse donnée par @mpm ne fonctionne pas elle donne l'erreur
Les doublons dans un répéteur ne sont pas autorisés. Utilisez l'expression 'track by' pour spécifier des clés uniques. Répéteur: {0}, clé en double: {1}
Pour éviter cela avec
ng-repeat = "t dans getTimes (4)"
utilisation
suivi par $ index
comme ça
<div ng-repeat = "t dans la piste getTimes (4) par $ index"> TEXT </div>
Pour répéter 7 fois, essayez d'utiliser un tableau avec une longueur = 7 , puis suivez- le par $ index :
<span ng-repeat="a in (((b=[]).length=7)&&b) track by $index" ng-bind="$index + 1 + ', '"></span>
b=[]
créer un tableau vide «b»,
.length=7
mettre sa taille à «7»,
&&b
laisser le nouveau tableau «b» être disponible pour ng-repeat,
track by $index
où «$ index» est la position de l'itération.
ng-bind="$index + 1"
affichage à partir de 1.
Pour répéter X fois: il
suffit de remplacer 7 par X .
Toutes les réponses ici semblent supposer que les éléments sont un tableau. Cependant, dans AngularJS, cela pourrait aussi bien être un objet. Dans ce cas, ni le filtrage avec limitTo ni array.slice ne fonctionnera. Comme solution possible, vous pouvez convertir votre objet en tableau, si cela ne vous dérange pas de perdre les clés d'objet. Voici un exemple de filtre pour faire exactement cela:
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;
}
};
});
Une fois qu'il s'agit d'un tableau, utilisez slice ou limitTo, comme indiqué dans d'autres réponses.