Ich möchte in der Lage sein, ein ArrayController
zu sortieren, dessen Inhalt aus einer Glutendatenabfrage stammt. Leider scheint die sortProperty
mixin in diesem Fall nicht zu funktionieren.
Ich möchte Folgendes tun können:
%Vor% Mit der neuesten Version von Ember
und Ember-data gibt dies die Ausgabe:
Das Problem hier ist, dass App.store.findAll()
ein RecordArray
zurückgibt, dessen Inhaltseigenschaft nicht einfach ein Array von App.Item
Instanzen ist (in diesem Fall ist der Inhalt [2, 3, 4])
Um tatsächlich die Instanzen zu bekommen, muss ich etwas wie objectAt()
verwenden. Aber selbst wenn ich die App.Item
Instanzen aus dem RecordArray
extrahiere und sie in einem gewöhnlichen Array ablege, funktionieren die Dinge nicht wie erwartet.
Vermisse ich den offensichtlichen Weg, dies zu tun, oder ist das nur der gegenwärtige Zustand des Rahmens? Ich möchte lieber nicht alle meine Modelle als normale Objekte replizieren, nur um sie zu sortieren.
BEARBEITEN:
Ich habe das Problem gelöst, indem ich meine eigene benutzerdefinierte ArrayController
erstellt habe. Trotzdem wäre es schön, wenn die Dinge wie oben funktionieren würden.
BEARBEITEN # 2:
Original Lenker Vorlage:
%Vor% (Ich hatte auch eine sortProperty
-Eigenschaft anstelle von sortProperties
in meinem obigen Code verwendet, aber das war nur ein Tippfehler.)
Und ja, wenn man stattdessen
benutzt %Vor%Dann bekommen wir genau das, was wir wollen:
%Vor% Ab Ember 1.1.2 und ember-data 1.0.0-beta.3 und wahrscheinlich früher genügt es, sortProperties auf dem Controller zu setzen. sortAscending
kann abhängig von der zu sortierenden Richtung auf true
oder false
gesetzt werden.
Beachten Sie jedoch, dass
%Vor%scheint eher lexikalisch als numerisch zu sortieren. Ich habe die lexikalische Sortierung mit einem created_at-Zeitstempel umgehen können, aber es kann einen anderen Weg geben.
Ich hatte das gleiche Problem. Nahm mich eine Weile, aber schließlich löste diese allgemeine Lösung es:
%Vor% Jetzt erweitern die meisten meiner ArrayControllers App.ArrayController
anstelle von Ember.ArrayController
, insbesondere diejenigen, die Ember / Data RecordArray
s als Inhalt haben.
Nun, in Ihren Lenkervorlagen, machen Sie das:
%Vor%statt
%Vor%Ich hatte ein ähnliches Problem und sortierte es über die Dokumentation für die Array-Klasse In meiner Route habe ich die Methode sortBy () verwendet. in deinem Fall könnte es so etwas wie
sein %Vor%Ich weiß, dass das eine alte Frage ist, aber beantworte sie für den Fall, dass jemand wie ich selbst stolpert von
Tags und Links ember.js ember-data