2013-12-19 4 views
3

В настоящее время я пытаюсь выполнить требование для маршрутизируемого в моем приложении ember. Цель состоит в том, чтобы иметь вкладку с мозаичным вкладом, на котором каждая вкладка имеет собственный URL-адрес (например, /settings, /settings/profile или /settings/billing), но по-прежнему отображается над тем, что в настоящий момент находится в фоновом режиме.Маршрутизация модальности поверх любого маршрута

Живой пример может быть прямым сообщением twitter.com модальным, но с его открытием модального (и нажатия ссылок внутри модального) обновлять URL приложения.

Основная стена, на которой я попал, пытаясь реализовать это, заключается в том, что мои выходы отсоединяются при выходе из «верхнего» маршрута. У меня был начальный успех с переопределением Route#teardownViews, но я беспокоюсь о других побочных эффектах.

EDIT: Для ясности, я вынести модальный в отдельную розетку:

SettingsRoute = Ember.Route.extend 

    renderTemplate: -> 
    @render 
     into: 'application' 
     outlet: 'modal' 

Может ли быть лучший подход в целом взять здесь?

+0

Отключите проблему «модального диалога» от проблемы. Это просто то, как вы представляете, где вы положили '{{outlet}}' для вашего маршрута. Я не уверен, что это даже означает закладки подпрограммы * независимо от того, какой маршрут он находится ... ?? '{confused: true}' –

+0

Вопрос отредактирован - надеюсь, он имеет немного больше смысла. :) – sheldonbaker

ответ

1

Это похоже на работу концептуально (я только рушить взгляды «главного» маршрут, если я не переходить на сообщения или настройки маршрута (который я определил как «модальные» маршрутов)):

Ember.Route.reopen 

    teardownViews: -> 
    @_super() unless @controllerFor('application').get('currentTransition.targetName') == 'messages.index' 

    actions: 
    willTransition: (transition) -> 
     controller = @controllerFor('application') 

     controller.set('currentTransition', transition) 

     transition.then -> 
     controller.set('currentTransition', null) 
     , -> 
     controller.set('currentTransition', null) 

Отправляет сообщение, если я сделаю любой другой прогресс.

Смежные вопросы