並べ替えを含むほとんどのシナリオでは、 に組み込まれている を使用することをお勧めしEmber.SortableMixin
ますEmber.ArrayController
。
JSFiddle のこの概念的な例を参照してください: http://jsfiddle.net/schawaska/tbbAe/
このサンプルでは、モデルにDateTime
という名前のフィールドがwhen
あり、これをフィルタリングに使用しています。
App.Greeting = DS.Model.extend({
text: DS.attr('string'),
when: DS.attr('date')
});
App.Greeting.FIXTURES = [
{id: 1, text: 'First', when: '3/4/2013 2:44:52 PM'},
{id: 2, text: 'Second', when: '3/4/2013 2:44:52 PM'},
{id: 3, text: 'Third', when: '3/4/2013 2:44:52 PM'},
{id: 4, text: 'Fourth', when: '3/4/2013 3:44:52 PM'}
];
コントローラーで行う必要があるのは、プロパティの名前と並べ替え方向を設定することだけです。
App.SortingMixinController = Em.ArrayController.extend({
sortProperties: ['when'],
sortAscending: false
});
次に、Handlebars テンプレートで、{{each}}
通常どおりヘルパーを使用できます。
このサンプルでは、 Forthを除いてすべての日付が同じであるため (並べ替えのために最初に表示されます)、また のためにSortableMixin
、これらの値は別のプロパティを介して並べ替えられます。ここでは Id を想定しています。
そのフィドルで私が取ったもう1つのアプローチは、計算されたプロパティを使用することです。App.SortingPropertyController
より多くのリソースを消費するように見え、コードは笑いに値するので、そのアプローチについてはよくわかりませんが、可能性を示すために機能します。