Коллекция сортировки Backbonejs изменить порядок? - PullRequest
6 голосов
/ 20 мая 2011

Как изменить порядок сортировки базовой коллекции после ее инициализации?

Пробовал это: не работает

    collection.comparator = function () {
      // new function
    }
    collectionObject.sort()

Ответы [ 2 ]

3 голосов
/ 20 мая 2011

Не думаю, что вы правильно определяете компаратор.Если вы определите компаратор, объекты будут вставлены в коллекцию в правильном порядке.

Вот пример, который вы можете просто запустить через firebug на сайте с загруженной магистралью:

var Chapter  = Backbone.Model;
var chapters = new Backbone.Collection;

chapters.comparator = function(chapter) { 
  return chapter.get("page");
};

chapters.add(new Chapter({page: 9, title: "The End"}));
chapters.add(new Chapter({page: 5, title: "The Middle"}));
chapters.add(new Chapter({page: 1, title: "The Beginning"}));

chapters.pluck('title');

# OUTPUT
# ["The Beginning", "The Middle", "The End"]

Обратите внимание, как компаратор возвращает значение, сохраненное в атрибуте страницы каждой главы.Сортировка коллекции Backbone действует как sortBy, который использует строки или целые числа и не следует традиционному подходу сравнения -1,0,1.

2 голосов
/ 20 мая 2011

Должно работать, если вы вызываете sort для правильной коллекции:

collection.comparator = function (item) {
  return item.get('field');
};

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