Ответ 1
Извините за короткий ответ (не успевайте ответить), но посмотрите на определение функции компаратора.
Мне нужно вставить модель в коллекцию в позиции Collection.length-2. Последняя модель в коллекции всегда должна оставаться последней моделью в коллекции.
То, что я пробовал до сих пор:
Я добавил одну "страницу" в коллекцию "Страницы", а затем попытался поменять их, изменив их последовательность:
var insertedpage = Pages.at(Pages.length-1);
var lastpage = Pages.at(Pages.length-2);
insertedpage.set({sequence: Pages.length-1});
lastpage.set({sequence: Pages.length});
Я также попытался удалить последнюю страницу, а затем добавить новую страницу, а затем добавить последнюю страницу.
var lastpage = Pages.pop();
Pages.add({example1: example2});
Pages.push(lastpage);
ни одна из них не работала. Недавно добавленная страница по-прежнему отображается как последняя модель в коллекции. Нужно ли мне после этого называть какую-то функцию порядка?
Извините за короткий ответ (не успевайте ответить), но посмотрите на определение функции компаратора.
Backbone.Collection.add()
принимает объект options
, который поддерживает ключ at
для указания индекса.
Pass
{at: index}
, чтобы объединить модель в коллекцию с указаннымindex
.
Пример:
Pages.add({ foo: bar }, { at: Pages.length - 2 })
По тому же предложению, что и Роб Хруска, используйте Backbone.Collection.add()
с at
в объекте options
.
Pages = new Backbone.Collection([
{id:1, foo:'bar'},
{id:2, foo:'barista'} /* Last model should remain last */
]);
/* Insert new "page" not at the end (default) but length minus 1 */
Pages.add({id:3, foo:'bartender'}, { at: Pages.length - 1 });
Pages.at(0).id === 1; // true
Pages.at(Pages.length - 2).id === 3; // true
Pages.at(Pages.length - 1).id === 2; // true
Вы упомянули, что Pages
похоже сортируется по атрибуту sequence
; у вас есть функция comparator
, определенная в коллекции Pages?
Другой вопрос, хотите ли вы обновить этот атрибут sequence
для всех существующих моделей страниц, находящихся в настоящее время в коллекции, когда новая страница добавляется во вторую позицию в последнюю позицию? Или был ли этот атрибут попыткой выполнить ваш первоначальный вопрос?