Как использовать компаратор для сортировки по нескольким атрибутам? - PullRequest
2 голосов
/ 08 декабря 2011

Я хочу иметь возможность сортировать мои модели в коллекции сначала по их 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

1 Ответ

4 голосов
/ 08 декабря 2011

Ваш "компаратор" может вернуть строку, состоящую из значения и строковой версии вашего логического свойства "required", которое упорядочит вещи так, как вы хотите:

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

Таким образом, значение "A "сравнивается как" 0A "или" 1A "в зависимости от флага" required ".

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...