2015-02-09 6 views
1

У меня есть базовая коллекция, которая тянет кучу имен шаблонов для людей, и я хотел бы отсортировать их по алфавиту, чтобы их было легче найти. Я очень не уверен, как это сделать.Сортировка основы в алфавитном порядке

У меня есть магистральная коллекция

this.templates = new Backbone.Collection(); 

, а затем я перебирать шаблоны, чтобы выяснить, где добавить, что.

var Names = this.model.collection.models.map(function(model){ 
    return (model.attributes.Name) ? model.attributes.Name : 'Template'; 
}); 

Names.forEach(function(name) { 
    _this.templates.add(api.collections[(_this.templateType)].where({Name : name, ShowInToolBox : true})); 
//adding a bunch of conditionals to add cretin forms to modules that are outside the scope 
} 

Можно ли их перевести в алфавитном порядке?

Я попытался добавить .sortBy("Name") в базовую коллекцию, но это просто остановило мой код от запуска.

+0

Если эти ответы были вам полезны, отметьте соответствующим образом. – ncksllvn

ответ

2

Магистраль предлагает comparator недвижимость для сортировки. Вы можете передать имя свойства, что коллекция должна быть отсортированы по конструктору:

this.templates = new Backbone.Collection([], { comparator: 'Name' }) 

Каждый раз, когда изменения коллекции, он будет повторно отсортированы по имени свойства в comparator. Если вы делаете что-то более сложное, вы можете определить comparator как функцию. Если идти по этому пути, то я бы рекомендовал простирающийся Backbone.Collection для ясности:

var Templates = Backbone.Collection.extend({ 
    comparator: function(template1, template2){ 
     return template1.get('someValue') - template2.get('someValue') 
    } 
}) 

var templates = new Templates() 
0

Магистральные коллекции могут быть отсортированы с comparator function.

Если вы определяете компаратор, он будет использоваться для хранения коллекции в отсортированном порядке. Это означает, что по мере добавления моделей они вставляются с правильным индексом в collection.models. Компаратор может быть определен как sortBy (передать функцию, которая принимает один аргумент), как сортировку (передать функцию компаратора, которая ожидает два аргумента), или как строку, указывающую атрибут для сортировки.

Смежные вопросы