Ich weiß, dass wir ng-repeat leicht für json-Objekte oder Arrays verwenden können, wie:
<div ng-repeat="user in users"></div>
Aber wie können wir die ng-Wiederholung für Wörterbücher verwenden, zum Beispiel:
var users = null;
users["182982"] = "{...json-object...}";
users["198784"] = "{...json-object...}";
users["119827"] = "{...json-object...}";
Ich möchte das mit dem Benutzerwörterbuch verwenden:
<div ng-repeat="user in users"></div>
Ist es möglich?. Wenn ja, wie kann ich das in AngularJs machen?
Beispiel für meine Frage: In C # definieren wir Wörterbücher wie:
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)
{
}
Gibt es eine integrierte Funktion, die die Werte aus einem Wörterbuch wie in c # zurückgibt?
Antworten:
Sie können verwenden
Siehe ngRepeat-Dokumentation . Beispiel: http://jsfiddle.net/WRtqV/1/
quelle
Ich möchte auch eine neue Funktionalität von AngularJS
ng-repeat
erwähnen , nämlich spezielle Start- und Endpunkte für Wiederholungen . Diese Funktionalität wurde hinzugefügt, um eine Reihe von HTML-Elementen anstelle eines einzelnen übergeordneten HTML-Elements zu wiederholen .Um Punkte Verwendung Repeater Anfang und am Ende müssen Sie sie definieren , indem Sie mit
ng-repeat-start
undng-repeat-end
jeweils Richtlinien.Die
ng-repeat-start
Richtlinie funktioniert sehr ähnlich wie dieng-repeat
Richtlinie. Der Unterschied besteht darin, dass alle HTML-Elemente (einschließlich des Tags, für das sie definiert sind) bis zum Ende des HTML-Tags wiederholt werden, an dem sieng-repeat-end
platziert sind (einschließlich des Tags mitng-repeat-end
).Beispielcode (von einem Controller):
Beispiel-HTML-Vorlage:
Die Ausgabe würde wie folgt aussehen (abhängig vom HTML-Stil):
Wie Sie sehen können, werden
ng-repeat-start
alle HTML-Elemente (einschließlich des Elements mitng-repeat-start
) wiederholt . Alleng-repeat
speziellen Eigenschaften (in diesem Fall$first
und$index
) funktionieren ebenfalls wie erwartet.quelle
<div ng-repeat-end>..</div>
in Ihrem Markup übersprungen habenJavaScript-Entwickler neigen dazu, die obige Datenstruktur entweder als Objekt oder als Hash anstelle eines Wörterbuchs zu bezeichnen.
Ihre obige Syntax ist falsch, da Sie das
users
Objekt als null initialisieren . Ich nehme an, dass dies ein Tippfehler ist, da der Code lauten sollte:Um alle Werte aus einem Hash abzurufen, müssen Sie ihn mit einer for-Schleife durchlaufen:
Wenn Sie viel mit Datenstrukturen in JavaScript arbeiten möchten, ist die Bibliothek underscore.js auf jeden Fall einen Blick wert. Der Unterstrich enthält eine
values
Methode , mit der die oben genannte Aufgabe für Sie ausgeführt wird:Ich benutze Angular selbst nicht, aber ich bin mir ziemlich sicher, dass es eine praktische Methode geben wird, um die Werte eines Hashs zu durchlaufen (ah, los geht's, Artem Andreev liefert die Antwort oben :))
quelle
In Angular 7 würde das folgende einfache Beispiel funktionieren (vorausgesetzt, das Wörterbuch befindet sich in einer Variablen namens
d
):my.component.ts:
my.component.html: (zeigt eine Liste der Schlüssel: Wert-Paare an)
quelle