我希望能够对ArrayController
内容来自 ember-data 查询的内容进行排序。不幸的是,sortProperty
在这种情况下,mixin 似乎不起作用。
我希望能够做到以下几点:
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']
});
使用最新版本的Ember
Ember-data,这给出了输出:
[ id: 4, name: banana ]
[ id: 2, name: apple ]
[ id: 6, name: spaghetti ]
这里的问题是App.store.findAll()
返回RecordArray
的内容属性不仅仅是一个App.Item
实例数组(在这种情况下,内容是 [2, 3, 4])
要真正掌握实例,我需要使用类似objectAt()
. 但即使我App.Item
从 中提取实例RecordArray
并将它们转储到普通数组中,事情也不会按预期工作。
我是否错过了执行此操作的明显方法,或者这只是框架的当前状态?我宁愿不必为了对它们进行排序而将所有模型复制为普通对象。
编辑:
我通过自己定制解决了这个问题ArrayController
。不过,如果事情像上面那样工作,那就太好了。
编辑#2:
原始车把模板:
<script type="text/x-handlebars">
{{#each App.ItemsController.content }}
<p>[ id: {{id}}, name: {{name}} ]</p>
{{/each}}
</script>
(另外,我在上面的代码中使用了sortProperty
属性而不是sortProperties
,但这只是一个错字。)
是的,如果有人改为使用
<script type="text/x-handlebars">
{{#each App.ItemsController.arrangedContent }}
<p>[ id: {{id}}, name: {{name}} ]</p>
{{/each}}
</script>
然后我们得到我们想要的:
[ id: 2, name: apple ]
[ id: 4, name: banana ]
[ id: 6, name: spaghetti ]