我有一个具有以下定义的骨干模型
var ABCModel = Backbone.Model.extend({
defaults: function() {
return {
Id: -1,
Name: "",
SomeCollectionABC: "",
SomeCollectionXYZ: ""
};
}
});
现在SomeCollectionABC中的值具有以下格式:
[
Object { Id=28, Day="MON", Score=0, more...},
Object { Id=25, Day="TUE", Score=7, more...},
Object { Id=25, Day="MON", Score=7, more...},
Object { Id=25, Day="WED", Score=7, more...},
]
对于这个模型我动态添加和删除对象,我希望能够使用不同的属性对此列表进行排序,比如有时我想用'Id'排序,有时候会按'Day'排序。
我该怎么做?
答案 0 :(得分:2)
您可以使用underscore.js的_.sortBy
函数。
_.sortBy(ABCModel.get('SomeCollectionXYZ'), function(obj) {
// your sorting logic
});
或类似的东西:
var ABCModel = Backbone.Model.extend({
// your existing code ...
sortXYZ:function(param) {
var result = _.sortBy(this.get('SomeCollectionXYZ'),
function(obj) {
return obj[param];
});
return result; // or this.set({SomeCollectionXYZ:result});
}
});
ABCModel.sortXYZ('Day'); // or ABCModel.sortXYZ('Id');
答案 1 :(得分:0)
如果它是常规集合/数组,则使用下划线作为另一个答案建议。如果它是Backbone Collection,那么您可以使用comparator
属性
var SomeCollection = Backbone.Collection.extend({
comparator: function(model){
return model.get('someProperty');
}
}
然后它应该保持自己的排序顺序。如果您需要,也可以致电
SomeCollection.sort();