2013-07-30 3 views
0

У меня есть магистральную модель со следующим DefinationКак отсортировать списки в базовой модели?

var ABCModel = Backbone.Model.extend({ 
    defaults: function() { 
     return { 
      Id: -1, 
      Name: "", 
      SomeCollectionABC: "", 
      SomeCollectionXYZ: "" 
     }; 
    } 
}); 

Теперь значения в SomeCollectionABC имеет следующий формат:

[ 
    Object { Id=28, Day="MON", Score=0, more...}, 
    Object { Id=25, Day="TUE", Score=7, more...}, 
    Object { Id=25, Day="MON", Score=7, more...}, 
    Object { Id=25, Day="WED", Score=7, more...}, 
] 

к этой модели я добавлять и удалять объекты на лету, я хочу чтобы отсортировать этот список с разными свойствами, скажите, что когда-нибудь я хочу сортировать с 'Id', иногда сортировать с 'Day'.

Как это сделать?

ответ

2

Вы можете использовать функциюunderscore.js.

_.sortBy(ABCModel.get('SomeCollectionXYZ'), function(obj) { 
    // your sorting logic 
}); 

Или что-то вроде:

var ABCModel = Backbone.Model.extend({ 
// your existing code ... 

sortXYZ:function(param) { 
    var result = _.sortBy(this.get('SomeCollectionXYZ'), 
    function(obj) { 
     return obj[param]; 
     }); 
    return result; // or this.set({SomeCollectionXYZ:result}); 
    } 
}); 

ABCModel.sortXYZ('Day'); // or ABCModel.sortXYZ('Id'); 
0

Если это регулярный сбор/массив, а затем использовать подчеркивание, как подсказывает другой ответ. Если это Backbone Collection, то вы можете использовать comparator собственности

var SomeCollection = Backbone.Collection.extend({ 
    comparator: function(model){ 
     return model.get('someProperty'); 
    } 
} 

, а затем он должен держать себя в отсортированном порядке. Если вам это нужно, вы также можете позвонить по телефону

SomeCollection.sort(); 
Смежные вопросы