Comment utiliser ng-repeat pour les dictionnaires dans AngularJs?

Je sais que nous pouvons facilement utiliser ng-repeat pour les objects json ou les tableaux tels que:

mais comment utiliser 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 des utilisateurs:

 

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 dict = new Dictionary(); //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 dans c #?

Vous pouvez utiliser

 
  • {{name}}: {{age}}
  • Voir la documentation ngRepeat . Exemple: http://jsfiddle.net/WRtqV/1/

    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 et ng-repeat-end .

    La directive ng-repeat-start fonctionne de manière très similaire à la directive ng-repeat . La différence est qu’elle répète tous les éléments HTML (y compris la balise définie) jusqu’à la balise HTML finale où ng-repeat-end est placée (y compris la balise avec ng-repeat-end ).

    Exemple de code (d’un contrôleur):

     // ... $scope.users = {}; $scope.users["182982"] = {name:"John", age: 30}; $scope.users["198784"] = {name:"Antonio", age: 32}; $scope.users["119827"] = {name:"Stephan", age: 18}; // ... 

    Exemple de modèle HTML:

     
    ==== User details ====
    {{$index+1}}. {{id}} {{user.name}} ({{user.age}})
    some img
    ======================

    La sortie ressemblerait à la suivante (en fonction du style HTML):

     ==== User details ==== 1. 119827 Stephan (18) ====================== ==== User details ==== 2. 182982 John (30) [sample image goes here] ====================== ==== User details ==== 3. 198784 Antonio (32) [sample image goes here] ====================== 

    Comme vous pouvez le voir, ng-repeat-start répète tous les éléments HTML (y compris l’élément avec ng-repeat-start ). Toutes les propriétés spéciales ng-repeat (dans ce cas, $first et $index ) fonctionnent également comme prévu.

    Les développeurs JavaScript ont tendance à se référer à la structure de données ci-dessus comme un object ou un hachage au lieu d’un dictionnaire.

    Votre syntaxe ci-dessus est incorrecte car vous initialisez l’object users tant que null. Je présume que c’est une faute de frappe, car le code devrait se lire comme suit:

     // Initialize users as a new hash. var users = {}; users["182982"] = "..."; 

    Pour récupérer toutes les valeurs d’un hachage, vous devez l’itérer en utilisant une boucle for:

     function getValues (hash) { var values = []; for (var key in hash) { // Ensure that the `key` is actually a member of the hash and not // a member of the `prototype`. // see: http://javascript.crockford.com/code.html#for%20statement if (hash.hasOwnProperty(key)) { values.push(key); } } return values; }; 

    Si vous envisagez de faire beaucoup de travail avec des structures de données en JavaScript, la bibliothèque underscore.js vaut vraiment le coup d’oeil. Underscore vient avec une méthode de values qui effectuera la tâche ci-dessus pour vous:

     var values = _.values(users); 

    Je n’utilise pas Angular moi-même, mais je suis sûr qu’il y aura une méthode pratique pour itérer les valeurs de hachage (ah, voilà Artem Andreev qui fournit la réponse ci-dessus :))