как переключать представления с роутером backbone.js?
Это скорее концептуальный вопрос с точки зрения использования магистрального маршрутизатора и рендеринга представлений в магистрали.
для примера (на чем я учусь это делать) у меня есть базовое приложение CRUD для контактов, с формой создания, списком всех контактов, единым представлением контактов и формой редактирования.
для простоты я скажу, что я хотел бы видеть только одну из этих вещей одновременно. Очевидно, что показывать и скрывать их с помощью jQuery было бы тривиально, но это не то, что мне нужно.
У меня есть две идеи,
1) инициировать настраиваемые события из моего маршрутизатора, который удаляет все представления и отправляет события, которые можно прослушивать во всех представлениях (вызывая метод close), и основное представление приложения, которое затем создает конкретное представление, то есть:
App.Router = Backbone.Router.extend({
routes: {
'' : 'index',
'addnew' : 'addNew',
'contacts/:id' : 'singleContact',
'contacts/:id/edit' : 'editContact'
},
index: function(){
vent.trigger('contactR:closeAll');
vent.trigger('contactR:index');
},
addNew: function() {
vent.trigger('contactR:closeAll');
vent.trigger('contactR:addNew');
},
singleContact: function(id) {
vent.trigger('contactR:closeAll');
vent.trigger('contactR:singleContact', id);
},
editContact: function(id) {
vent.trigger('contactR:closeAll');
vent.trigger('contactR:editContact', id);
},
});
(nb: vent расширяет магистральные события obj, так что я могу паб / саб)
2) или можно / можно / нужно отправить событие close all и создать экземпляр представления в маршрутизаторе?
Обратите внимание, что я хочу достичь этого, не углубляясь в дополнительные библиотеки или фреймворки, такие как марионетка и т. Д.