Как правильно входить и выходить из модальных состояний с Ember router v2?

Я могу'• выяснить, как правильно обрабатывать модальные состояния / представления с помощью нового маршрутизатора Ember. В целом, как вы обрабатываете состояния, которые вы можете входить и выходить, не влияя на "главный" состояние (URL)?

Например, "Новое сообщение" кнопка, котораявсегда доступно независимо от текущего состояния листа. ЩелчокНовое сообщение" должен открыть новое сообщение модально поверх текущего представления, не затрагивая URL.

В настоящее время яиспользуя такой подход:

Маршруты:

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: Я

New Message
{{outlet}}
{{outlet modalView}}

Мы, очевидно, опущены некоторые код для краткости.

Этот подход 'работает' но есть две проблемы, указанные выше:

м с помощью частного API, чтобы удалить модальное представление вhideModal обработчик события.Мне нужно указатьapplication шаблон во всех моих подчиненных, потому что если я нет, реализация по умолчаниюrenderTemplate попытаюсь сделать рендеринг в модалШаблон s вместо приложения, если вы открываете модальное окно, закрываете его, а затем перемещаетесь между состояниями входящих и архива (потому что модальноеШаблон сталlastRenderedTemplate для IndexRoute).

Очевидно, что ни одна из этих проблем не является нарушителем, но было бы неплохо узнать, есть ли лучший подход, который ям или если это просто пробел в текущем API маршрутизатора.

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

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