Я новичок в 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)
})
}
Проблема здесь
(а) не отражает изменения модели в
коллекция
(b) не вызывает (не изменяет) события, потому что связывание в
Функция инициализации представления никогда не срабатывает, потому что это
совершенно новая модель
(с) мне кажется хаком
(d) каждый раз, когда я нажимаю на вкладку, создается новое представление (это
проблема с производительностью?)
Какая самая лучшая практика здесь?