Ich würde gerne in der Lage sein, eine ArrayController
zu sortieren, deren Inhalt stammt aus einer Glutendaten Abfrage. Leider scheint das sortProperty
Mixin in diesem Fall nicht zu funktionieren.Sortieren eines ArrayController von Ember-Daten über sortProperty Mixin
Ich möchte in der Lage sein, Folgendes zu tun:
App = Ember.Application.create();
App.store = DS.Store.create({ revision: 4});
App.Item = DS.Model.extend({
id: DS.attr('string'),
name: DS.attr('string')
});
App.store.createRecord(App.Item, {id: '4', name: 'banana' });
App.store.createRecord(App.Item, {id: '2', name: 'apple'});
App.store.createRecord(App.Item, {id: '6', name: 'spaghetti'});
App.ItemsController = Ember.ArrayController.create({
content: App.store.findAll(App.Item),
sortProperties: ['name']
});
Mit der neuesten Version von Ember
und Ember-Daten ergibt dies die Ausgabe:
[ id: 4, name: banana ]
[ id: 2, name: apple ]
[ id: 6, name: spaghetti ]
Das Problem hier ist, Das App.store.findAll()
gibt eine RecordArray
zurück, deren Inhaltseigenschaft nicht einfach ein Array von App.Item
Instanzen ist (in diesem Fall ist Inhalt [2, 3, 4])
Um tatsächlich die Instanzen in die Hände 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.
Fehle ich den offensichtlichen Weg, dies zu tun, oder ist dies nur der aktuelle Stand des Frameworks? Ich möchte lieber nicht alle meine Modelle als einfache Objekte replizieren, nur um sie zu sortieren.
EDIT:
ich rund um das Thema bekam durch ArrayController
mein eigenes zu machen. Trotzdem wäre es schön, wenn die Dinge wie oben funktionieren würden.
EDIT # 2:
Original-Lenker Vorlage: (. Außerdem hatte ich eine sortProperty
Eigenschaft statt sortProperties
in meinem obigen Code verwendet, aber das war nur ein Tippfehler)
<script type="text/x-handlebars">
{{#each App.ItemsController.content }}
<p>[ id: {{id}}, name: {{name}} ]</p>
{{/each}}
</script>
Und ja, wenn man stattdessen verwendet
<script type="text/x-handlebars">
{{#each App.ItemsController.arrangedContent }}
<p>[ id: {{id}}, name: {{name}} ]</p>
{{/each}}
</script>
Dann
wir genau das bekommen, was wir wollen:
[ id: 2, name: apple ]
[ id: 4, name: banana ]
[ id: 6, name: spaghetti ]
Es tut mir leid, Sie haben keine besonders getan Gute Arbeit zu erklären, was hier nicht funktioniert, können Sie bitte Ihre Lenker-Vorlage in. Ich denke, es gibt ein kleines Problem, wo Sie manchmal an den 'arrangedContent'-Wert des' ArrayController 'binden müssen, um die korrekt geordneten Objekte zu erhalten. –