Vorrei poter ordinare uno ArrayController
il cui contenuto proviene da una query di dati di brace. Sfortunatamente, il mixin sortProperty
non sembra funzionare in questo caso.Ordinamento di un controller Array supportato da Ember-Data tramite il mixin sortProperty
mi piacerebbe essere in grado di effettuare le seguenti operazioni:
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']
});
Con l'ultima versione di Ember
e Ember-dati, questo dà l'output:
[ id: 4, name: banana ]
[ id: 2, name: apple ]
[ id: 6, name: spaghetti ]
Il problema qui è che App.store.findAll()
restituisce una RecordArray
cui proprietà contenuto non è semplicemente un array di App.Item
casi (in questo caso, il contenuto è [2, 3, 4])
Per mettere effettivamente le mani sulle istanze ho bisogno di usare qualcosa come objectAt()
. Ma anche se estraggo le istanze dallo RecordArray
e le scarico in un array ordinario, le cose non funzionano come previsto.
Mi manca il modo ovvio per farlo, o è solo lo stato attuale del framework? Preferirei non dover replicare tutti i miei modelli come oggetti semplici solo per ordinarli.
EDIT:
ho avuto tutto il problema facendo la mia personalizzato ArrayController
. Comunque, sarebbe bello se le cose funzionassero come sopra.
EDIT # 2:
originale Manubrio modello: (. Inoltre, avevo usato una proprietà invece di sortProperties
nel mio codice sopra sortProperty
, ma che era solo un errore di battitura)
<script type="text/x-handlebars">
{{#each App.ItemsController.content }}
<p>[ id: {{id}}, name: {{name}} ]</p>
{{/each}}
</script>
E sì, se si utilizza invece
<script type="text/x-handlebars">
{{#each App.ItemsController.arrangedContent }}
<p>[ id: {{id}}, name: {{name}} ]</p>
{{/each}}
</script>
Poi abbiamo ottenere esattamente quello che vogliamo:
[ id: 2, name: apple ]
[ id: 4, name: banana ]
[ id: 6, name: spaghetti ]
Mi dispiace, non avete fatto un particolare buon lavoro di spiegare cosa non funziona qui, puoi inserire il tuo modello di manubrio in. Penso che ci sia un piccolo problema dove a volte devi associare al valore 'arrangedContent' di' ArrayController' per ottenere gli oggetti ordinati correttamente. –