我想用两个属性对一个集合进行排序,一个是“完整”,它返回true或false,第二个是id,除了我需要一个属于降序。有没有办法做到这一点?
答案 0 :(得分:2)
是的,你可以做那种事情。集合的comparator
采用一个参数或两个参数函数:
比较器函数可以定义为sortBy(传递一个带有单个参数的函数),或者定义为sort(传递一个需要两个参数的比较器函数)。
您可能希望使用双参数形式,如下所示:
comparator: function(a, b) {
var ac = a.get('complete');
var bc = b.get('complete');
if(ac && !bc)
return 1;
if(!ac && bc)
return -1;
var as = a.get('seconds');
var bs = b.get('seconds');
if(as > bs)
return -1;
if(bs < as)
return 1;
return 0;
}
如果你的Backbone的旧版本不理解双参数comparator
函数,那么你必须升级或找出一种方法来混合complete
和{{1} }使用Underscore's sortBy
正确排序的单个排序键。