Me gustaría poder ordenar un ArrayController
cuyo contenido surge de una consulta de datos de color ámbar. Desafortunadamente, la mixin sortProperty
no parece funcionar en este caso.Ordenando un ArrayController respaldado por Ember-Data mediante sortProperty mixin
Me gustaría ser capaz de hacer lo siguiente:
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 la última versión de Ember
y Ember-datos, esto da la salida:
[ id: 4, name: banana ]
[ id: 2, name: apple ]
[ id: 6, name: spaghetti ]
La cuestión aquí es que App.store.findAll()
devuelve RecordArray
cuya propiedad de contenido no es simplemente una matriz de App.Item
instancias (en este caso, el contenido es [2, 3, 4])
Para tener realmente las manos en las instancias necesito usar algo como objectAt()
. Pero incluso si extraigo las instancias App.Item
del RecordArray
y las vuelvo a colocar en una matriz ordinaria, las cosas no funcionan como se esperaba.
¿Me falta la forma obvia de hacerlo, o es solo el estado actual del marco? Prefiero no tener que replicar todos mis modelos como objetos simples solo para ordenarlos.
EDIT:
que tiene en torno al tema al hacer mi propia costumbre ArrayController
. Aún así, sería bueno si las cosas funcionaran como arriba.
editar # 2:
original Manillar plantilla: (. Además, había utilizado un sortProperty
propiedad en lugar de sortProperties
en mi código anterior, pero eso fue sólo un error tipográfico)
<script type="text/x-handlebars">
{{#each App.ItemsController.content }}
<p>[ id: {{id}}, name: {{name}} ]</p>
{{/each}}
</script>
Y sí, si se utiliza en lugar
<script type="text/x-handlebars">
{{#each App.ItemsController.arrangedContent }}
<p>[ id: {{id}}, name: {{name}} ]</p>
{{/each}}
</script>
A continuación, obtener exactamente lo que queremos:
[ id: 2, name: apple ]
[ id: 4, name: banana ]
[ id: 6, name: spaghetti ]
lo siento, no lo ha hecho un particular buen trabajo de explicar lo que no funciona aquí, ¿puede poner su plantilla de manubrios? Creo que hay un pequeño problema donde a veces hay que vincularse al valor 'arrangedContent' del' ArrayController' para obtener los objetos correctamente ordenados. –