Javascript 余烬路由设计。桌面式路由
因此,我想建立一个应用程序,将具有与桌面相同的效果,因此我有一个负载的路由,我希望它们在windows(“modals”)中打开,我甚至不确定这种设计是否可以与EmberJS一起使用,但我能想到的唯一方法是让URL结尾看起来像 app.com/#/skype/files/chrome 最终打开了3个窗口(skype、文件和chrome) 我想就这种设计提出一些建议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()
谢谢对于您建议的路由方案,这当然是可行的。基于此设计,我建议采用以下路由方案:
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看不出你所说的链接到是什么意思。如果用提琴来说明这个问题是可行的。是的,我认为这确实是不可能的,我认为余烬可能不是这种应用程序的最佳方法,所以我转向了角度和废料路线,因为它们在任何框架下都是不可能的,谢谢你的输入。