Ember.js 在任何路线的顶部布置模态

Ember.js 在任何路线的顶部布置模态,ember.js,modal-dialog,ember-router,Ember.js,Modal Dialog,Ember Router,我目前正在尝试在我的ember应用程序中实现可路由模式的要求。目标是有一个选项卡式模式覆盖,其中每个选项卡都有自己的URL(例如,/settings,/settings/profile,或/settings/billing),但仍然显示在当前位于后台的任何路由上 一个活生生的例子可能是’s direct messages modal,但它可以使打开该模式(并单击模式内的链接)更新应用程序的URL 我在尝试实现这一点时遇到的主要障碍是,我的插座在“顶部”路线出口时断开。我在覆盖Route#tear

我目前正在尝试在我的ember应用程序中实现可路由模式的要求。目标是有一个选项卡式模式覆盖,其中每个选项卡都有自己的URL(例如,
/settings
/settings/profile
,或
/settings/billing
),但仍然显示在当前位于后台的任何路由上

一个活生生的例子可能是’s direct messages modal,但它可以使打开该模式(并单击模式内的链接)更新应用程序的URL

我在尝试实现这一点时遇到的主要障碍是,我的插座在“顶部”路线出口时断开。我在覆盖
Route#teardownViews
方面取得了一些初步成功,但我担心其他副作用

编辑:为清晰起见,我确实在单独的插座中渲染模式:

SettingsRoute = Ember.Route.extend

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

这里有没有更好的方法

这在概念上似乎是可行的(如果我没有转换到消息或设置路由(我定义为“模式”路由),我只会删除“主”路由的视图):


如果我有任何其他进展,将发回。

将您的“模态对话框”问题与问题分开。这就是你展示路线的
{{outlet}}
的方式。我甚至不知道将子例程标记为书签意味着什么,而不管它在哪条路径上<代码>{fuzzed:true}问题已编辑-希望它更有意义。:)
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)