¿Cómo usar ng-repeat para diccionarios en AngularJs?

Sé que podemos usar fácilmente ng-repeat para objetos json o matrices como:

pero ¿cómo podemos usar ng-repeat para diccionarios, por ejemplo:

 var users = null; users["182982"] = "{...json-object...}"; users["198784"] = "{...json-object...}"; users["119827"] = "{...json-object...}"; 

Quiero usar eso con el diccionario de usuarios:

 

¿Es posible?. Si es así, ¿cómo puedo hacerlo en AngularJs?

Ejemplo para mi pregunta: En C # definimos diccionarios como:

 Dictionary dict = new Dictionary(); //and then we can search for values, without knowing the keys foreach(var val in dict.Values) { } 

¿Hay una función incorporada que devuelve los valores de un diccionario como en c #?

Puedes usar

 
  • {{name}}: {{age}}
  • Ver la documentación de ngRepeat . Ejemplo: http://jsfiddle.net/WRtqV/1/

    También me gustaría mencionar una nueva funcionalidad de AngularJS ng-repeat , es decir, repetición especial de inicio y fin de puntos . Esa funcionalidad se agregó para repetir una serie de elementos HTML en lugar de solo un elemento HTML principal.

    Para utilizar los puntos de inicio y finalización del repetidor, debe definirlos utilizando las directivas ng-repeat-start y ng-repeat-end , respectivamente.

    La directiva ng-repeat-start funciona muy similar a la directiva ng-repeat . La diferencia es que repetirá todos los elementos HTML (incluida la etiqueta en la que está definido) hasta la etiqueta HTML final donde se coloca ng-repeat-end (incluida la etiqueta con ng-repeat-end ).

    Código de muestra (de un controlador):

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

    Plantilla HTML de muestra:

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

    La salida se vería similar a la siguiente (dependiendo del estilo 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] ====================== 

    Como puede ver, ng-repeat-start repite todos los elementos HTML (incluido el elemento con ng-repeat-start ). Todas las propiedades especiales ng-repeat (en este caso $first y $index ) también funcionan como se esperaba.

    Los desarrolladores de JavaScript tienden a referirse a la estructura de datos anterior como un objeto o hash en lugar de un diccionario.

    Su syntax anterior es incorrecta ya que está inicializando el objeto de los users como nulo. Supongo que es un error tipográfico, ya que el código debería leer:

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

    Para recuperar todos los valores de un hash, necesita iterar sobre él utilizando un ciclo 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 planea hacer mucho trabajo con estructuras de datos en JavaScript, la biblioteca underscore.js definitivamente merece una visita. Underscore viene con un método de values que realizará la tarea anterior para usted:

     var values = _.values(users); 

    Yo no uso Angular, pero estoy bastante seguro de que habrá un método de conveniencia para iterar sobre los valores de un hash (ah, ahí vamos, Artem Andreev proporciona la respuesta anterior :))