Sorting 定义用于排序和反向排序Appcelerator主干模型的多个比较器
我正在新的Alloy实现中定义Appcelerator DataGrid,它依赖于主干框架。我已经成功地实现了一个水平和垂直滚动的DataGrid,它还通过REST查询将数据收集绑定到DataGrid,并允许用户在触摸列标题时对网格进行排序 我遇到的一个问题是。当使用主干模型实现实现数据模型时,我使用比较器以升序方式对数据模型进行排序。我还扩展了模型,允许用户定义排序条件(传递过滤器的列定义) 问题是。我知道网格何时按升序排序。在主干模型中,是否可以定义第二个比较器,然后按照相反的顺序排序,以便用户可以按照降序排序(基本上创建两个比较器)?我见过关于反向排序的问题,但没有看到关于在一个模型中允许两个比较器选项的问题 下面是Appcelerator的一个通用模型:Sorting 定义用于排序和反向排序Appcelerator主干模型的多个比较器,sorting,backbone.js,model,appcelerator,comparator,Sorting,Backbone.js,Model,Appcelerator,Comparator,我正在新的Alloy实现中定义Appcelerator DataGrid,它依赖于主干框架。我已经成功地实现了一个水平和垂直滚动的DataGrid,它还通过REST查询将数据收集绑定到DataGrid,并允许用户在触摸列标题时对网格进行排序 我遇到的一个问题是。当使用主干模型实现实现数据模型时,我使用比较器以升序方式对数据模型进行排序。我还扩展了模型,允许用户定义排序条件(传递过滤器的列定义) 问题是。我知道网格何时按升序排序。在主干模型中,是否可以定义第二个比较器,然后按照相反的顺序排序,以便
exports.definition = {
config : {
// table schema and adapter information
},
extendModel: function(Model) {
_.extend(Model.prototype, {
// Extend, override or implement the Backbone.Model methods
});
return Model;
},
extendCollection: function(Collection) {
_.extend(Collection.prototype, {
// Implement the comparator method.
comparator : function(book) {
return book.get('title');
}
}); // end extend
return Collection;
}
}
考虑到上述情况,如果可能的话,我希望第二次访问comparator可以对标题进行反向排序
谢谢你的指导
Chris。要按降序对字符串(不区分大小写)或数字进行排序,请尝试以下操作:
var sort_descending = false; /* assuming you are able to set this variable when you need to sort */
var sort_attribute_name = "title"; /* assuming you can set the attribute name on which you want to sort */
book_list.comparator = function(book){ /* book_list is an instance of book_collection */
if(sort_descending){
if(isNaN(book.get(sort_attribute_name)){
var str = book.get(sort_attribute_name);
str = str.toLowerCase();
str = str.split("");
str = _.map(str, function(letter){
return String.fromCharCode(-(letter.charCodeAt(0))); /* from an SO answer*/
});
}
return -book.get(sort_attribute_name);
}
return book.get(sort_attribute_name);
};
复制的?这对我来说很有用: