考虑使用Ember编写的ftp浏览器应用程序。它可能具有层次结构的树视图和当前选择的文件的列表视图。并将当前选择存储在URL中:
的baseUrl /#路径
e.g。
www.emberftp.com/#stuff/docs/programming
没那么困难。
然而!现在考虑将此应用程序扩展为具有两种浏览器视图,类似于Windows Commander。而且这一个视图目前正在浏览/ stuff / docs / programming和其他/ backup / images。
显然,这需要某个级别的多个出口,但URL会发生什么?
首先,支持这一点吗?如果是,应该如何设置路由和序列化/ deserialzaion? URL实际上是什么样的?
的baseUrl /#browser1 = /东西/文档/编程&安培; browser2 = /备份/图片
也许?
答案 0 :(得分:0)
Ember路由器将更新浏览器的URL以反映当前的应用程序状态。这样做是为了使用户可以通过URL返回或共享其当前状态。值得注意的是,路由器在给定时间内只能处于一种状态。
路由器就是使用序列化和反序列化来重新创建它的状态。这基本上是将当前应用程序状态转换为可共享URL的想法,反之亦然。要解决您发布的问题,您应该有一个模型,我们称之为window
,其中有许多browsers
。然后,当您通过URL加载窗口时,您可以轻松地重建所有ftp浏览器。我认为处理一个模型会使序列化/反序列化过程更容易概念化。
无论如何,这是模型的外观。
App.Window.create({
id: 1,
browsers: [1, 2]
});
App.Browser.create({
id: 1,
path: "/stuff/docs/programming"
});
App.Browser.create({
id: 2,
path: "/backup/images"
})
你的路由器只需要知道如何反序列化“/ windows /:window_id”。