如何使用比较器按多个属性排序

How do I use the comparator to sort by multiple attributes?

本文关键字:属性 排序 何使用 比较器      更新时间:2023-09-26

我希望能够首先按required标志排序我的模型,然后按字母顺序排序value

目前我的代码看起来像这样:

var myModel = Backbone.Model.extend({
    defaults: {
        required: true,
        value: '',
        ...
    }
};
var myCollection = Backbone.Collection.extend({
    model: myModel,
    comparator: function (model) {
        return -model.get('required');
    }
});
myCollection.create([
     {value: 'A', required: false},
     {value: 'B', required: true},
     {value: 'C', required: false},
     {value: 'D', required: false},
     {value: 'E', required: true}
]);

比较器首先按所需对我的模型进行排序,但我不知道如何按字母顺序对它们进行排序。当前,当视图渲染它们时,它们会显示出来

E, B, D, C, A

我想让它们被渲染:

B, E, A, C, D

您的"comparator"可以返回由值和布尔"required"属性的字符串化版本组成的字符串,它将按您想要的方式排序:

comparator: function(model) {
  return (model.required ? "0" : "1") + model.value;
}

这样,值"A"将根据"required"标志比较为"0A"或"1A"。