ArrayController
残り火データクエリからコンテンツが発生するものを並べ替えることができるようにしたいと思います。残念ながら、sortProperty
この場合、ミックスインは機能しないようです。
次のことができるようになりたいです。
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 ]
ここでの問題は、コンテンツプロパティが単なるインスタンスの配列ではない(この場合、コンテンツは[2、3、4])をApp.store.findAll()
返すことです。RecordArray
App.Item
実際にインスタンスを入手するには、のようなものを使用する必要があります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 ]