Eu sei que podemos facilmente usar ng-repeat para objetos json ou matrizes como:
<div ng-repeat="user in users"></div>
mas como podemos usar o ng-repeat para dicionários, por exemplo:
var users = null;
users["182982"] = "{...json-object...}";
users["198784"] = "{...json-object...}";
users["119827"] = "{...json-object...}";
Eu quero usar isso com o dicionário de usuários:
<div ng-repeat="user in users"></div>
É possível?. Se sim, como posso fazer isso no AngularJs?
Exemplo para minha pergunta: No C #, definimos dicionários 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)
{
}
Existe uma função interna que retorna os valores de um dicionário como em c #?
Respostas:
Você pode usar
Veja a documentação do ngRepeat . Exemplo: http://jsfiddle.net/WRtqV/1/
fonte
Eu também gostaria de mencionar uma nova funcionalidade do AngularJS
ng-repeat
, a saber, pontos especiais de início e fim de repetição . Essa funcionalidade foi adicionada para repetir uma série de elementos HTML em vez de apenas um elemento HTML pai único .Para usar os pontos inicial e final do repetidor, é necessário defini-los usando
ng-repeat-start
eng-repeat-end
diretivas, respectivamente.A
ng-repeat-start
diretiva funciona muito semelhante àng-repeat
diretiva. A diferença é que isso repetirá todos os elementos HTML (incluindo a tag em que está definida) até a tag HTML final em queng-repeat-end
é colocada (incluindo a tag comng-repeat-end
).Código de amostra (de um controlador):
Modelo HTML de amostra:
A saída seria semelhante à seguinte (dependendo do estilo HTML):
Como você pode ver,
ng-repeat-start
repete todos os elementos HTML (incluindo o elemento withng-repeat-start
). Todasng-repeat
as propriedades especiais (neste caso$first
e$index
) também funcionam como esperado.fonte
<div ng-repeat-end>..</div>
na sua marcaçãoOs desenvolvedores de JavaScript tendem a se referir à estrutura de dados acima como um objeto ou hash em vez de um Dicionário.
Sua sintaxe acima está errada, pois você está inicializando o
users
objeto como nulo. Presumo que seja um erro de digitação, pois o código deve ler:Para recuperar todos os valores de um hash, é necessário iterá-lo usando um loop for:
Se você planeja trabalhar muito com estruturas de dados em JavaScript, a biblioteca underscore.js definitivamente vale a pena dar uma olhada. O sublinhado vem com um
values
método que executará a tarefa acima para você:Eu não uso o Angular, mas tenho certeza de que haverá um método de conveniência incorporado para iterar sobre os valores de um hash (ah, lá vamos nós, Artem Andreev fornece a resposta acima :))
fonte
No Angular 7, o exemplo simples a seguir funcionaria (assumindo que o dicionário esteja em uma variável chamada
d
):my.component.ts:
my.component.html: (exibirá a lista de pares chave: valor)
fonte