Wie wechsle ich die Ansicht mit dem Router "backbone.js"?

Dies ist eher eine konzeptionelle Frage in Bezug auf die Verwendung des Backbone-Routers und das Rendern von Ansichten im Backbone.

Als Beispiel (womit ich dies lernen möchte) habe ich eine einfache CRUD-App für Kontakte, mit Formular erstellen, einer Liste aller Kontakte, einer Kontakt-Einzelansicht und einem Bearbeitungsformular.

Der Einfachheit halber werde ich sagen, dass ich immer nur eines dieser Dinge sehen möchte. Offensichtlich wäre es trivial, sie mit jQuery zu zeigen und zu verstecken, aber das ist nicht mein Ziel.

Ich habe zwei Ideen,

1) Auslösen von benutzerdefinierten Ereignissen von meinem Router, die alle Ansichten entfernen und Ereignisse senden, die in allen Ansichten abgehört werden könnten (Auslösen einer Schließmethode), sowie einer Haupt-App-Ansicht, die dann eine bestimmte Ansicht instanziiert:

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 erweitert das Backbone-Event-Objekt, damit ich es veröffentlichen kann)

2) oder würde / könnte / sollte ich ein Ereignis zum Schließen aller senden und eine Instanz der Ansicht im Router erstellen?

Hinweis: Ich möchte dies erreichen, ohne zusätzliche Bibliotheken oder Frameworks wie Marionette usw. zu untersuchen.

Antworten auf die Frage(1)

Ihre Antwort auf die Frage