Progressivement concaténer des chaînes à l'intérieur Angulaire du modèle (c'est à dire dans la vue)
À l'intérieur d'un ng-repeat
, je suis en train d'ajouter un peu de texte dans une variable.
La vraie raison pour laquelle je fais cela, c'est parce que j'ai un modèle récursif et je veux continuer à ajouter de la même variable. Mais j'ai créé un exemple simple pour démontrer qu'une partie du problème, je vais avoir dans l'espoir qu'il peut m'aider à résoudre les autres problèmes.
Je m'attends à l'écran pour imprimer tous les numéros, suivi par un " b " chacun, comme
1b
2b
3b
...
Au lieu de cela, il imprime
1bbbbbbbbbbb
2bbbbbbbbbbb
3bbbbbbbbbbb
...
Pourquoi?
Voici mon JSFiddle: http://jsfiddle.net/fd1f6yso/1/
Vous devez vous connecter pour publier un commentaire.
Parce que c'est la façon de liaison de données qui fonctionne par défaut: chaque valeur de temps de
num
la modification de la variable, l'expression est recalculé - modification de lanum
encore, et encore, et encore. Finalement, il s'arrête; avez-vous vérifié la console, vous auriez vu beaucoup de " 10 $digest itérations atteint des erreurs. Et c'est pourquoi vous voyez exactement 10b
imprimé dans chaque ligne.Il est assez facile de se débarrasser du problème, si vous voulez le même nombre de
b
imprimés à chaque étape:Si vous voulez construire une sorte de pyramide, l'incrémentation de la
b
-comte, c'est un peu plus compliqué. Voici une démarche possible:Démo.
ng-include
et l'appeler à partir de l'intérieur de lui-mêmeavec
{num = (num+'b')
vous êtes à la mise à jour des num de référence des précédentes itérations ainsi l'ajout de " b " à chaque refrence à chaque fois et obtenir des mises à jour comme
afin de ne pas affecter seulement ajouter "b" , comme
Démo
JS:
HTML: