Sé que podemos usar fácilmente ng-repeat para objetos json o matrices como:
<div ng-repeat="user in users"></div>
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:
<div ng-repeat="user in users"></div>
¿Es posible?. En caso afirmativo, ¿cómo puedo hacerlo en AngularJs?
Ejemplo para mi pregunta: en C # definimos diccionarios como:
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)
{
}
¿Hay una función incorporada que devuelve los valores de un diccionario como en c #?
Respuestas:
Puedes usar
Consulte la documentación de ngRepeat . Ejemplo: http://jsfiddle.net/WRtqV/1/
fuente
También me gustaría mencionar una nueva funcionalidad de AngularJS
ng-repeat
, a saber, puntos especiales de inicio y finalización de repetición . Esa funcionalidad se agregó para repetir una serie de elementos HTML en lugar de un solo elemento HTML principal.Para utilizar los puntos de inicio y finalización del repetidor, debe definirlos utilizando las directivas
ng-repeat-start
yng-repeat-end
respectivamente.La
ng-repeat-start
directiva funciona de manera muy similar a lang-repeat
directiva. La diferencia es que repetirá todos los elementos HTML (incluida la etiqueta en la que se define) hasta la etiqueta HTML final dondeng-repeat-end
se coloca (incluida la etiqueta conng-repeat-end
).Código de muestra (de un controlador):
Plantilla HTML de muestra:
La salida sería similar a la siguiente (dependiendo del estilo HTML):
Como puede ver,
ng-repeat-start
repite todos los elementos HTML (incluido el elemento conng-repeat-start
). Todasng-repeat
las propiedades especiales (en este caso$first
y$index
) también funcionan según lo esperado.fuente
<div ng-repeat-end>..</div>
su marcadoLos desarrolladores de JavaScript tienden a referirse a la estructura de datos anterior como un objeto o hash en lugar de un Diccionario.
Su sintaxis anterior es incorrecta ya que está inicializando el
users
objeto como nulo. Supongo que esto es un error tipográfico, ya que el código debería leer:Para recuperar todos los valores de un hash, debe iterar sobre él utilizando un bucle for:
Si planea hacer mucho trabajo con estructuras de datos en JavaScript, entonces vale la pena echar un vistazo a la biblioteca underscore.js . El subrayado viene con un
values
método que realizará la tarea anterior para usted:No uso Angular yo mismo, pero estoy bastante seguro de que habrá un método de conveniencia incorporado para iterar sobre los valores de un hash (ah, ahí vamos, Artem Andreev proporciona la respuesta anterior :))
fuente
En Angular 7, el siguiente ejemplo simple funcionaría (suponiendo que el diccionario esté en una variable llamada
d
):my.component.ts:
my.component.html: (mostrará la lista de pares clave: valor)
fuente