Ответ 1
У вас есть объекты Date, поэтому вы можете использовать getTime
, чтобы преобразовать их в числа, а затем отменить эти числа, чтобы получить самые последние даты первый. Если вы хотите, чтобы ваша коллекция отсортировалась, сравните ее следующим образом:
C = Backbone.Collection.extend({
//...
comparator: function(m) {
return -m.get('date').getTime();
}
});
сделает трюк. Демо (откройте консоль): http://jsfiddle.net/ambiguous/htcyh/
Коллекции backbone также включают в себя Underscore sortBy
, поэтому вы можете сделать одноразовый сорт:
var sorted = c.sortBy(function(m) { return -m.get('date').getTime() });
Демо: http://jsfiddle.net/ambiguous/FF5FP/
Или вы можете использовать toArray
, чтобы получить обычный массив JavaScript и использовать стандартный sort
без использования getTime
:
var sorted = c.toArray().sort(function(a, b) {
a = a.get('date');
b = b.get('date');
if(a > b)
return -1;
if(a < b)
return 1;
return 0;
});