Je sais que nous pouvons facilement utiliser ng-repeat pour des objets json ou des tableaux comme:
<div ng-repeat="user in users"></div>
mais comment pouvons-nous utiliser le ng-repeat pour les dictionnaires, par exemple:
var users = null;
users["182982"] = "{...json-object...}";
users["198784"] = "{...json-object...}";
users["119827"] = "{...json-object...}";
Je veux l'utiliser avec le dictionnaire utilisateur:
<div ng-repeat="user in users"></div>
C'est possible?. Si oui, comment puis-je le faire dans AngularJs?
Exemple pour ma question: en C # nous définissons des dictionnaires comme:
Dictionary<key,value> dict = new Dictionary<key,value>();
//and then we can search for values, without knowing the keys
foreach(var val in dict.Values)
{
}
Existe-t-il une fonction intégrée qui renvoie les valeurs d'un dictionnaire comme en c #?
Réponses:
Vous pouvez utiliser
Voir la documentation ngRepeat . Exemple: http://jsfiddle.net/WRtqV/1/
la source
Je voudrais également mentionner une nouvelle fonctionnalité d' AngularJS
ng-repeat
, à savoir les points de début et de fin de répétition spéciaux . Cette fonctionnalité a été ajoutée afin de répéter une série d'éléments HTML au lieu d'un seul élément HTML parent.Pour utiliser les points de début et de fin du répéteur, vous devez les définir en utilisant respectivement les directives
ng-repeat-start
etng-repeat-end
.La
ng-repeat-start
directive fonctionne de manière très similaire à lang-repeat
directive. La différence est qu'il répète tous les éléments HTML (y compris la balise sur laquelle il est défini) jusqu'à la balise HTML de fin oùng-repeat-end
est placé (y compris la balise avecng-repeat-end
).Exemple de code (provenant d'un contrôleur):
Exemple de modèle HTML:
La sortie ressemblerait à la suivante (selon le style HTML):
Comme vous pouvez le voir,
ng-repeat-start
répète tous les éléments HTML (y compris l'élément avecng-repeat-start
). Toutesng-repeat
les propriétés spéciales (dans ce cas$first
et$index
) fonctionnent également comme prévu.la source
<div ng-repeat-end>..</div>
votre balisageLes développeurs JavaScript ont tendance à se référer à la structure de données ci-dessus comme un objet ou un hachage au lieu d'un dictionnaire.
Votre syntaxe ci-dessus est incorrecte car vous initialisez l'
users
objet comme nul. Je suppose que c'est une faute de frappe, comme le code devrait le lire:Pour récupérer toutes les valeurs d'un hachage, vous devez itérer dessus en utilisant une boucle for:
Si vous prévoyez de faire beaucoup de travail avec les structures de données en JavaScript, la bibliothèque underscore.js vaut vraiment le détour. Underscore est livré avec une
values
méthode qui effectuera la tâche ci-dessus pour vous:Je n'utilise pas Angular moi-même, mais je suis presque sûr qu'il y aura une méthode pratique pour itérer sur les valeurs d'un hachage (ah, c'est parti, Artem Andreev fournit la réponse ci-dessus :))
la source
Dans Angular 7, l'exemple simple suivant fonctionnerait (en supposant que le dictionnaire se trouve dans une variable appelée
d
):my.component.ts:
my.component.html: (affichera la liste des paires clé: valeur)
la source