在任何路线的顶部路由模态

时间:2013-12-19 18:59:26

标签: ember.js modal-dialog ember-router

我目前正在尝试在我的ember应用中实现可路由模式的要求。目标是使用标签式模式叠加,其中每个标签都有自己的网址(例如/settings/settings/profile/settings/billing),但仍显示 over 路线目前在后台。

一个实例可能是twitter.com的直接消息模式,但是让它打开模态(并点击模态内的链接)会更新应用的URL。

我试图实现这一点的主要障碍是我的网点在退出“顶部”路线时断开连接。我已经在覆盖Route#teardownViews方面取得了一些初步成功,但我担心其他副作用。

编辑:为了清楚起见,我确实将模态渲染到一个单独的出口:

SettingsRoute = Ember.Route.extend

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

这可能会有一个更好的方法来采取这里?

1 个答案:

答案 0 :(得分: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)

如果我做出任何其他进展,我会回复。