0

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

4

1 回答 1

2

是的,你可以做那种事情。集合comparator接受一个参数或两个参数的函数:

比较器函数可以定义为sortBy(传递一个接受单个参数的函数)或排序(传递一个需要两个参数的比较器函数)。

你会想要使用两个参数的形式,像这样:

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;
}

如果你有一个不理解两个参数comparator函数的旧版本的 Backbone,那么你将不得不升级或找出一种方法来混合completeseconds组合成一个排序键,该排序键将使用UnderscoresortBy正确排序。

于 2012-05-01T05:03:13.557 回答