Я новичок в Backbone и у меня есть следующий вопрос:
У меня есть коллекция моделей.
У меня есть представление коллекции, отображающее вкладки (с представлением для каждой модели в коллекции).
У меня есть мнение о модели (о содержании).
У меня есть роутер с маршрутами.
Я пытаюсь достичь такой функциональности, как http://jqueryui.com/demos/tabs/
Я нажимаю вкладку (модель коллекции), а затем хочу передать модель в просмотр содержимого может изменить его и отразить изменения в коллекции.
Я придумал четыре решения:
В маршрутизаторе:
'switchCommunity': function(id) {
// (a) set new model attributes
this.view.community.model.set(communities.get(id));
// (b) replace model
this.view.community.model = communities.get(id);
// (c) a custom function of the view changes its model
this.view.community.changeModel(communities.get(id));
// (d) a new view
this.view.community = new View({
model: communities.get(id)
})
}
Проблема в том, что
(a) не отражает изменения модели в collection
(b) не запускает (изменяет) события, потому что привязка в функция инициализации представления никогда не срабатывает, потому что это совершенно новая модель
(c) мне кажется взломом
(d) каждый раз, когда я нажимаю на вкладку, создается новое представление (это проблема с производительностью?)
Какая здесь лучшая практика?
Плагин Backbone.Marionette предоставляет оптимизированное решение для вашей проблемы.
Он обеспечивает функциональность для инициализации приложения, управления просмотром и агрегации событий.
По сути, это избавляет от боли, скрывая и демонстрируя множество взглядов.
Вы можете прочитать это сообщение в блоге , чтобы узнать больше об этом.