Was ist der einfache Weg zu konvertieren Objekt in der Reihe, Angular JS?
Meine Anwendung erstellt wurde, die auf Angular JS und hat eine Menge AJAX-requests auf dem server.
Zum Beispiel, in PHP habe ich die Ausgabe formatieren array wie:
$dialog[$userId] = array(
'time' => $key,
'message' => $message['message'],
'name_user' => $info['name']
);
echo json_encode($dialog); die();
Aber in Angular JS bekomme ich kein array, sondern Objekt:
549: Objectid_user: "549"Nachricht: "Hallo"name_user: "Ali
Akhmedov"Zeit: 1432070505
Problem, dass, wenn die Verwendung ng-repeat
dann nicht funktioniert die Sortierung Objekt.
Warum in PHP-ich-array, sondern auf client-Objekt?
Was einfache Weg zu konvertieren Objekt-array? Weil ich viele Objekte auf der Seite von AJAX.
- die Funktionen json_encode analysiert assoziierte arrays in php als Objekte im json-Format.
- Assoziative arrays (JS-)Objekte. Es ist nicht klar, welche Art von Daten, die Sie wollen, sind Sie glücklich mit
[1432070505, "Hello", "Ali Akhmedo"]
? - Okay, was ist Art und Weise zu lösen problem?
- Ich möchte, dass die Arbeit orderBy in
ng-repeat
für Objekt mit Schlüssel:549: Objectid_user: "549"message: "Hello"name_user: "Ali Akhmedov"time: 1432070505
- Das hängt davon ab, was genau das, was Sie brauchen, um zu erreichen ?
- In PHP, stellen Sie sicher, dass Sie nur den numerischen Tasten in
$dialog
, und jeder Taste zwischen0
und der höchsten id gesetzt ist, dannjson_encode
wird die Ausgabe ein array. - Meinst du, das zu tun
$dialog[] = array()
? - Hängt davon ab. Wird jeder Antwort enthalten alle Datensätze? Hat der index eine Rolle?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Brauchen Sie nicht zu konvertieren Objekt zu array in der Reihenfolge zu Durchlaufen, die es in
ng-repeat
. Sie können einfach verwenden Sie die folgende syntax:Dokumentation von
ngRepeat
.Leider wird dieser Ansatz nicht funktionieren mit
orderBy
filter. Zur Iteration über Objekt-Eigenschaften in der spezifischen Reihenfolge, die Sie benötigen, um Ihre eigenen filter. Es kann etwas sein wie:JavaScript
HTML
Plunker
http://plnkr.co/edit/DJo0Y6GaOzSuoi202Hkj?p=preview
Jedoch auch dieser Ansatz nur funktionieren, ab
1.4.x
, da heißt es in der Dokumentation, AngularJS vor1.4.x
Sortieren von Objekt-Eigenschaften in alphabetischer Reihenfolge während der Iteration über Sie inngRepeat
.In Reihenfolge zu make it work in Eckigen
1.3.x
oder sogar1.2.x
Sie können eine Umwandlung von Objekt zu array von Objekten, von denen jedes enthaltenkey
undvalue
Eigenschaften. Auf diese Weise werden Sie in der Lage sein, um es inngRepeat
in Kombination mit Filter einschließlichorderBy
. Hier ist ein code:JavaScript
HTML
Plunker
http://plnkr.co/edit/UXmlm1GKYRZzrOV5pMYT?p=preview
-key
und+key
haben nicht Unterschied. Des nicht funktioniertLassen Sie uns sagen, Sie haben ein Objekt wie:
Dann, in Ihrem Winkel
Controller
Sie tun können, so etwas wie:und dann in Ihre
HTML
Hier ist ein demo - plunker
orderBy
ist ein filter, und die Filter benötigen Sie ein array. So eine einfache Lösung ist, kombinieren Sie es mit einemtoArray
filter. Angenommen, Sie möchten, um Ihre Objekte mit Ihrentime
Eigenschaft:Als
toArray
filter ist nicht im Lieferumfang von AngularJS können Sie definieren, wie:Sehen https://plnkr.co/edit/E857InfrEGqToW0SvwOh?p=preview