Wiem, że możemy łatwo używać powtórzenia ng dla obiektów Json lub tablic takich jak:
<div ng-repeat="user in users"></div>
ale jak możemy użyć powtórzenia ng do słowników, na przykład:
var users = null;
users["182982"] = "{...json-object...}";
users["198784"] = "{...json-object...}";
users["119827"] = "{...json-object...}";
Chcę tego używać ze słownikiem użytkowników:
<div ng-repeat="user in users"></div>
Czy to możliwe?. Jeśli tak, jak mogę to zrobić w AngularJs?
Przykład mojego pytania: W języku C # definiujemy słowniki takie jak:
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)
{
}
Czy jest wbudowana funkcja, która zwraca wartości ze słownika, jak w c #?
Odpowiedzi:
Możesz użyć
Zobacz dokumentację ngRepeat . Przykład: http://jsfiddle.net/WRtqV/1/
źródło
Chciałbym również wspomnieć o nowej funkcjonalności AngularJS
ng-repeat
, a mianowicie o specjalnych punktach początkowych i końcowych powtarzania . Ta funkcjonalność została dodana w celu powtórzenia serii elementów HTML zamiast tylko jednego rodzica elementu HTML.Aby użyć punktów początkowych i końcowych repeatera, musisz zdefiniować je odpowiednio za pomocą
ng-repeat-start
ing-repeat-end
dyrektyw.ng-repeat-start
Dyrektywa działa bardzo podobnie dong-repeat
dyrektywy. Różnica polega na tym, że powtórzy wszystkie elementy HTML (w tym znacznik, w którym jest zdefiniowany) aż do końcowego znacznika HTML, w którymng-repeat-end
jest umieszczony (w tym znacznik zng-repeat-end
).Przykładowy kod (z kontrolera):
Przykładowy szablon HTML:
Dane wyjściowe wyglądałyby podobnie do następujących (w zależności od stylu HTML):
Jak widać,
ng-repeat-start
powtarza wszystkie elementy HTML (w tym element zng-repeat-start
). Wszystkieng-repeat
specjalne właściwości (w tym przypadku$first
i$index
) działają również zgodnie z oczekiwaniami.źródło
<div ng-repeat-end>..</div>
swój znacznikProgramiści JavaScript zwykle odnoszą się do powyższej struktury danych jako obiekt lub skrót zamiast Słownika.
Twoja powyższa składnia jest nieprawidłowa, ponieważ inicjujesz
users
obiekt jako null. Zakładam, że jest to literówka, ponieważ kod powinien brzmieć:Aby pobrać wszystkie wartości z skrótu, musisz iterować nad nim za pomocą pętli for:
Jeśli planujesz dużo pracy ze strukturami danych w JavaScript, biblioteka underscore.js jest zdecydowanie warta obejrzenia. Podkreślenie zawiera
values
metodę, która wykona dla ciebie powyższe zadanie:Sam nie używam Angulara, ale jestem prawie pewien, że będzie wbudowana wygodna metoda do iteracji wartości hash (ach, proszę bardzo, Artem Andreev podaje odpowiedź powyżej :))
źródło
W Angular 7 zadziałałby następujący prosty przykład (zakładając, że słownik znajduje się w zmiennej o nazwie
d
):my.component.ts:
my.component.html: (wyświetli listę par klucz: wartość)
źródło