Javascript 余烬路由设计。桌面式路由

Javascript 余烬路由设计。桌面式路由,javascript,ember.js,routes,url-routing,Javascript,Ember.js,Routes,Url Routing,因此,我想建立一个应用程序,将具有与桌面相同的效果,因此我有一个负载的路由,我希望它们在windows(“modals”)中打开,我甚至不确定这种设计是否可以与EmberJS一起使用,但我能想到的唯一方法是让URL结尾看起来像 app.com/#/skype/files/chrome 最终打开了3个窗口(skype、文件和chrome) 我想就这种设计提出一些建议 谢谢对于您建议的路由方案,这当然是可行的。基于此设计,我建议采用以下路由方案: App.Router.map(function()

因此,我想建立一个应用程序,将具有与桌面相同的效果,因此我有一个负载的路由,我希望它们在windows(“modals”)中打开,我甚至不确定这种设计是否可以与EmberJS一起使用,但我能想到的唯一方法是让URL结尾看起来像

app.com/#/skype/files/chrome

最终打开了3个窗口(skype、文件和chrome)

我想就这种设计提出一些建议


谢谢

对于您建议的路由方案,这当然是可行的。基于此设计,我建议采用以下路由方案:

App.Router.map(function() {
  this.resource('firstModal', { path: '/:modal' }, function() {
    this.resource('secondModal', { path: '/:modal' }, function() {
      this.resource('thirdModal', { path: '/:modal' }, function() {
      }) 
    })
  })
});
使用该方案,导航到
modal1.index
将只显示一个模态,导航到
modal1.modal2.index
将显示两个模态,依此类推

然后,可以为每个模式内容定义模板,并根据模板显示相应的模式。例如:

App.FirstModalRoute = Ember.Route.extend({
  model: function(params) {
    return params.modal;
  },

  renderTemplate: function() {
    var modalName = this.modelFor('firstModal');
    this.send('openModal', modalName);
  }

  deactivate: function() {
    // Remove the modal on exit route
    this.send('closeModal');
  }
});

老实说,这里有一个很大的问题,那就是路由器更像是一个而不是一个。不能从当前路径插入/删除任意路由。你总是从最后推/弹出


也就是说,如果你从
app.com/#/skype/files/chrome
切换到
app.com/#/files/chrome
,你真的会弹出三条路径,然后推两条新路径,这会破坏你的所有状态,然后再创建一条新路径。

我试过了,我能看到你的意思,但它一次只允许一种模式time@connorspiracist是的,我引用的Ember.Component一次只允许一个模态。您需要对使用多模式插座进行修改:
{{{outlet modal1}},{{{outlet modal2}}},
我一直在想,我可以使用多个插座,但我不可能使用。。。使用linkTo几乎是不可能的dynamically@connorspiracist看不出你所说的
链接到
是什么意思。如果用提琴来说明这个问题是可行的。是的,我认为这确实是不可能的,我认为余烬可能不是这种应用程序的最佳方法,所以我转向了角度和废料路线,因为它们在任何框架下都是不可能的,谢谢你的输入。