Sortierung eines ArrayControllers, der von Ember-Data unterstützt wird, über sortProperty mixin

8

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:

%Vor%

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%     
ahmacleod 22.09.2012, 22:10
quelle

4 Antworten

6

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.

%Vor%

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.

    
Melinda Weathers 07.11.2013, 01:57
quelle
11

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%     
Yossi Shasho 15.11.2012 12:24
quelle
4

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

    
Craicerjack 11.06.2014 16:21
quelle
3

Ab Ember Version 1.0.0-rc.4 Ember.ArrayProxy.create(Ember.SortableMixin .... scheint nicht mehr zu funktionieren. Benutzen Ember.ArrayProxy.createWithMixins(Ember.SortableMixin .... oder verwenden Sie die integrierten Sortierfunktionen in Ember.ArrayController.

    
Nairam 10.06.2013 18:46
quelle

Tags und Links