Angular fournit un certain support pour une boucle for utilisant des nombres dans ses directives HTML:
<div data-ng-repeat="i in [1,2,3,4,5]">
do something
</div>
Mais si votre variable d'étendue comprend une plage qui a un nombre dynamique, vous devrez créer un tableau vide à chaque fois.
Dans le contrôleur
var range = [];
for(var i=0;i<total;i++) {
range.push(i);
}
$scope.range = range;
Dans le HTML
<div data-ng-repeat="i in range">
do something
</div>
Cela fonctionne, mais ce n'est pas nécessaire car nous n'utiliserons pas du tout le tableau de plages dans la boucle. Quelqu'un sait-il de définir une plage ou un régulier pour la valeur min / max?
Quelque chose comme:
<div data-ng-repeat="i in 1 .. 100">
do something
</div>
Réponses:
J'ai légèrement modifié cette réponse et j'ai trouvé ce violon .
Filtre défini comme:
Avec la répétition utilisée comme ceci:
la source
J'ai proposé une version encore plus simple, pour créer une plage entre deux nombres définis, par exemple. 5 à 15
Voir la démo sur JSFiddle
HTML :
Contrôleur :
la source
var a; void 0 === a
"vraiment" indéfini.Rien que du Javascript (vous n'avez même pas besoin d'un contrôleur):
Très utile lors de la maquette
la source
Referencing "constructor" field in Angular expressions is disallowed! Expression: [].constructor(10)
. Peut-être que cela fonctionnait dans une version précédente d'Angular ou que je fais quelque chose de mal.[].slice.constructor
, qui donne accès àFunction
, donc à l'évaluation du code).J'ai trouvé une syntaxe légèrement différente qui me convient un peu plus et ajoute également une borne inférieure facultative:
que vous pouvez utiliser comme
ou
la source
$digest
itérations lors de l' utilisation d' une valeur scope, à savoir:ng-repeat="n in [1, maxValue] | makeRange"
?Pour ceux qui découvrent angularjs. L'index peut être obtenu en utilisant $ index.
Par exemple:
Qui, lorsque vous utilisez le filtre pratique de Gloopy, affiche:
faire quelque chose numéro 0
faire quelque chose numéro 1
faire quelque chose numéro 2
faire quelque chose numéro 3
faire quelque chose numéro 4
faire quelque chose numéro 5
faire quelque chose numéro 6
faire quelque chose numéro 7
faire quelque chose numéro 8
faire quelque chose numéro 9
la source
do something number {{n}}
cela suffirait également.Une façon rapide de le faire serait d'utiliser la méthode _.range () d'Underscore.js. :)
http://underscorejs.org/#range
la source
J'utilise ma
ng-repeat-range
directive personnalisée :et le code html est
ou simplement
ou même simplement
ou juste
la source
element.attr('ng-repeat', 'n in [' + rangeString + ']');
ne fonctionne pas ...La solution la plus simple sans code était d'initier un tableau avec la plage et d'utiliser le $ index + autant que je veux compenser par:
la source
Définition de la méthode
Le code ci-dessous définit une méthode
range()
disponible pour toute l'étendue de votre applicationMyApp
. Son comportement est très similaire à larange()
méthode Python .Usage
Avec un paramètre:
0, 1, 2,
Avec deux paramètres:
1, 2, 3, 4,
Avec trois paramètres:
-2, -1.5, -1, -0.5, 0, 0.5,
la source
Vous pouvez utiliser des filtres 'après' ou 'avant' dans le module angular.filter ( https://github.com/a8m/angular-filter )
HTML:
résultat: 5, 6, 7, 8, 9, 10
la source
Sans aucun changement dans votre contrôleur, vous pouvez utiliser ceci:
Prendre plaisir!
la source
Réponse la plus courte: 2 lignes de code
JS (dans votre contrôleur AngularJS)
HTML
... où
myCount
est le nombre d'étoiles qui devraient apparaître à cet endroit.Vous pouvez utiliser
$index
pour toutes les opérations de suivi. Par exemple, si vous souhaitez imprimer une mutation sur l'index, vous pouvez mettre ce qui suit dans lediv
:la source
Utilisation de UnderscoreJS:
En l'appliquant à,
$rootScope
il est disponible partout:la source
Très simple:
la source
Salut, vous pouvez y parvenir en utilisant du HTML pur en utilisant AngularJS (AUCUNE directive n'est requise!)
la source
Définir la portée dans le contrôleur
Définir la répétition dans le fichier de modèle HTML
la source
Une amélioration de la solution de @ Mormegil
usage
3 2 1 0 -1 -2 -3
-3 -2 -1 0 1 2 3
0 1 2 3
0 -1 -2 -3
la source
J'ai essayé ce qui suit et cela a très bien fonctionné pour moi:
Angulaire 1.3.6
la source
Tard à la fête. Mais j'ai fini par faire ça:
Dans votre contrôleur:
Html:
la source
Ceci est la réponse améliorée de jzm (je ne peux pas commenter autrement je commenterais sa réponse car il / elle a inclus des erreurs). La fonction a une valeur de plage de début / fin, elle est donc plus flexible et ... elle fonctionne. Ce cas particulier concerne le jour du mois:
la source
J'ai fouetté cela et j'ai vu que cela pourrait être utile pour certains. (Oui, CoffeeScript. Sue me.)
Directif
Utiliser:
HTML
Cela peut-il être plus simple?
Je me méfie des filtres car Angular aime les réévaluer sans raison valable tout le temps, et c'est un énorme goulot d'étranglement si vous en avez des milliers comme moi.
Cette directive surveillera même les changements dans votre modèle et mettra à jour l'élément en conséquence.
la source
Si vous voulez y parvenir en html sans aucun contrôleur ni usine.
la source
Supposons alors
$scope.refernceurl
un tableaula source
C'est la variante la plus simple: utilisez simplement un tableau d'entiers ....
la source