¿Cuál es la forma correcta de ingresar y salir de los estados modales con Ember router v2?

No puedo encontrar la manera correcta de manejar estados / vistas modales con el nuevo enrutador Ember. De manera más general, ¿cómo maneja los estados en los que puede entrar y salir sin afectar el estado "principal" (la URL)?

Por ejemplo, un botón de "Nuevo mensaje" que estásiempre disponible independientemente del estado de la hoja actual. Al hacer clic en "Nuevo mensaje", se abrirá el nuevo mensaje modal sobre la vista actual, sin afectar la URL.

Actualmente, estoy usando un enfoque como este:

Rutas:

App.Router.map(function() {
   this.route('inbox');
   this.route('archive');
});

App.IndexRoute = Em.Route.extend({
  ...
  events: {
    newMessage: function() {
      this.render('new_message', { into: 'application', outlet: 'modalView' });
    },

    // Clicking 'Save' or 'Cancel' in the new message modal triggers this event to remove the view:
    hideModal: function() {
      // BAD - using private API
      this.router._lookupActiveView('application').disconnectOutlet('modalView');
    }
  }
});

App.InboxRoute = Em.Route.extend({
   ...
   renderTemplate: function(controller, model) {
     // BAD - need to specify the application template, instead of using default implementation
     this.render('inbox', { into: 'application' });
   }
});

App.ArchiveRoute = ... // basically the same as InboxRoute

application.handlebars:

<button {{action newMessage}}>New Message</button>
{{outlet}}
{{outlet modalView}}

Obviamente, he dejado algo de código por brevedad.

Este enfoque 'funciona' pero tiene los dos problemas identificados anteriormente:

Estoy usando una API privada para eliminar la vista modal en elhideModal controlador de eventos.Necesito especificar elapplication plantilla en todas mis subrutas, porque si no lo hago, la implementación predeterminada derenderTemplate intentará mostrarse en la plantilla modal en lugar de en la aplicación si abre el modal, ciérrelo y luego navegue entre la bandeja de entrada y los estados de archivo (porque la plantilla del modal se ha convertido en la plantilla).lastRenderedTemplate para el IndexRoute).

Obviamente, ninguno de estos problemas son interruptores de trato, pero sería bueno saber si hay un mejor enfoque de que me estoy perdiendo o si esto es solo un vacío en la API del enrutador actual.

Respuestas a la pregunta(2)

Su respuesta a la pregunta