それを行う別の方法は、sortByメソッドを使用することです (アンダースコアに由来しますが、Backbone.Collection で使用できます)。このメソッドでは、モデル プロパティ名を渡すだけです。sortBy メソッドは配列を返すことに注意してください。
ここでは、ボタンの独立したビューがあります。並べ替えイベントをトリガーすると、他のビュー (リストのレンダリングを処理するビューなど) が並べ替えイベントに応答して再レンダリングできるようになります。
app.ButtonsView = Backbone.View.extend({
el: '#buttons',
events: {
'click #sortByNameBtn' : 'sortByName',
'click #sortByCategoryBtn' : 'sortByCategory'
},
sortByName : function(){
app.mycollection.models = app.mycollection.sortBy('name');
app.mycollection.trigger('sort');
},
sortByCategory : function(){
app.mycollection.models = app.mycollection.sortBy('category');
app.mycollection.trigger('sort');
}
});
参照: http://backbonejs.org/docs/backbone.html (sortBy で検索)
sortBy を使用すると、「ソート」イベントは発生しないため、コレクションで自分でトリガーします。また、並べ替えが複雑な Date プロパティやその他のプロパティでは、sortBy が機能しない場合があるため、そのためにはコンパレータを使用してください。