как переключать представления с роутером 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 и создать экземпляр представления в маршрутизаторе?

Обратите внимание, что я хочу достичь этого, не углубляясь в дополнительные библиотеки или фреймворки, такие как марионетка и т. Д.

Ответы на вопрос(1)

Ваш ответ на вопрос