骨干复杂排序问题

时间:2012-05-01 04:07:01

标签: sorting backbone.js

我想用两个属性对一个集合进行排序,一个是“完整”,它返回true或false,第二个是id,除了我需要一个属于降序。有没有办法做到这一点?

1 个答案:

答案 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正确排序的单个排序键。