Wie benutzt man ng-repeat für Wörterbücher in AngularJs?

Ich weiß, dass wir einfach ng-repeat für JSON-Objekte oder -Arrays wie:

aber wie können wir die ng-repeat 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 Benutzerwörterbuch verwenden:

 

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 dict = new Dictionary(); //and then we can search for values, without knowing the keys foreach(var val in dict.Values) { } 

Gibt es eine eingebaute function, die die Werte aus einem Dictionary wie in c # zurückgibt?

Solutions Collecting From Web of "Wie benutzt man ng-repeat für Wörterbücher in AngularJs?"

Sie können verwenden

 
  • {{name}}: {{age}}
  • Siehe ngRepeat-Dokumentation . Beispiel: http://jsfiddle.net/WRtqV/1/

    Ich möchte auch eine neue functionalität von AngularJS ng-repeat erwähnen, nämlich spezielle Start- und Endpunkte für Wiederholungen. Diese functionalität wurde hinzugefügt, um eine Reihe von HTML-Elementen anstelle von nur einem übergeordneten HTML-Element zu wiederholen.

    Um Repeater-Start- und Endpunkte zu verwenden, müssen Sie sie mit den statementen ng-repeat-start bzw. ng-repeat-end .

    Die ng-repeat-start Direktive funktioniert sehr ähnlich wie die ng-repeat Direktive. Der Unterschied besteht darin, dass alle HTML-Elemente (einschließlich des Tags, auf dem sie definiert sind) bis zum End-HTML-Tag ng-repeat-end dem ng-repeat-end platziert wird (einschließlich des Tags mit ng-repeat-end ).

    Beispielcode (von einem Controller):

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

    Beispiel-HTML-Vorlage:

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

    Die Ausgabe würde wie folgt aussehen (abhängig vom HTML-Design):

     ==== 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] ====================== 

    Wie Sie sehen können, ng-repeat-start alle HTML-Elemente (einschließlich des Elements mit ng-repeat-start ). Alle speziellen Eigenschaften von ng-repeat (in diesem Fall $first und $index ) funktionieren ebenfalls wie erwartet.

    JavaScript-Entwickler neigen dazu, die obige Datenstruktur als Objekt oder Hash anstelle eines Dictionary zu bezeichnen.

    Ihre obige Syntax ist falsch, da Sie das users als null initialisieren. Ich nehme an, das ist ein Tipperrors, wie der Code lesen sollte:

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

    Um alle Werte aus einem Hash abzurufen, müssen Sie mit einer for-Schleife darüber iterieren:

     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; }; 

    Wenn Sie viel mit Datenstrukturen in JavaScript arbeiten wollen, ist die Bibliothek underscore.js definitiv einen Blick wert. Underscore kommt mit einer values Methode, die die obige Aufgabe für Sie erfüllt:

     var values = _.values(users); 

    Ich benutze Angular nicht selbst, aber ich bin mir ziemlich sicher, dass es eine Convenience-Methode geben wird, um die Werte eines Hashes zu durchlaufen (ah, da gehen wir, Artem Andreev liefert die obige Antwort :))