Разделение элементов коллекции backbone.js (для группового рендеринга) - PullRequest
1 голос
/ 14 февраля 2012

Допустим, у меня есть модель backbone.js с именем Item, которая хранится в ItemCollection. Учитывая, что Item имеет атрибут date, какой будет наилучший подход к разделу ItemCollection, чтобы все элементы с одинаковой датой оказались в одном разделе?

В конечном счете структура разделенных данных должна иметь представление (backbone.js), которое должно отображать элементы, сгруппированные по дате.

Каков наилучший подход для этого?

Пока я считал

  1. динамическое извлечение разделов при отображении представления индекса, но это, вероятно, нарушило бы элегантность основанного на событиях механизма магистрали для визуализации обновлений коллекции / модели.

  2. представляет каждый заголовок группировки как экземпляр модели Header и присоединяет к нему коллекцию с ее разделом. Мне как-то нужно было бы синхронизировать разделы, прикрепленные к экземплярам Header, с основным ItemCollection, но, вероятно, это можно сделать с помощью механизма обработки событий магистрали.

Будет ли какой-либо из этих подходов иметь смысл? Есть другие идеи?

P.S .: Структура группировки не существует в моей модели данных бэкэнда (и я хотел бы избегать ее представления), поэтому это некоторое отображение, которое должно происходить на лету на стороне клиента

1 Ответ

1 голос
/ 14 февраля 2012

Кажется, что гибрид ваших двух вариантов будет работоспособным.Я, вероятно, подхожу к этому следующим образом:

  1. Вместо Header у вас может быть модель ItemGroup (немного более описательная), которая визуализирует Item s внутри ее collection, который будет разделом большего размера ItemCollection.
  2. Само разделение может быть выполнено, когда вы создадите родительское представление, которое я назову AppViewAppView#render разделите данные, как хотите.(Вы явно не спрашивали , как разделить данные, но вы можете использовать Underscore, чтобы сделать это в нескольких строках кода.)
  3. Привязать AppView#render к addи remove событие ItemCollection, поэтому при добавлении нового элемента разделы перерисовываются.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...