我有一個骨幹集合和兩個按鈕。我想要做的是如果我點擊button1它應該按名稱排序集合,如果按鈕2被點擊,它應該按類別排序。按名稱和按類別排序骨幹集合
我想這
comparator : function(model){
return model.get("Name");
}
我的問題是我可以有兩個比較器在我的收藏?我將如何分別按名稱和類別對收藏進行分類。有任何想法嗎?由於
我有一個骨幹集合和兩個按鈕。我想要做的是如果我點擊button1它應該按名稱排序集合,如果按鈕2被點擊,它應該按類別排序。按名稱和按類別排序骨幹集合
我想這
comparator : function(model){
return model.get("Name");
}
我的問題是我可以有兩個比較器在我的收藏?我將如何分別按名稱和類別對收藏進行分類。有任何想法嗎?由於
你可以排序變量附着在收集和使用,在比較:
App.List = Backbone.Collection.extend({
initialize: function() {
this.sortVar = 'Name';
},
comparator: function(model){
return model.get(this.sortVar);
}
})
然後,只需改變sortVar被點擊的鏈接,並調用排序()。
做它用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 的「排序」事件將不會被解僱所以這就是爲什麼我觸發它自己的集合。 此外,sortBy可能不適用於日期屬性或其他複雜排序,因此使用比較器。