Javascript 在余烬中保持多个状态
考虑使用Ember编写的ftp浏览器应用程序。它可能有一个层次结构的树状视图和一个当前所选文件的列表视图。并将当前选择存储在URL中,如下所示: baseUrl/#路径 e、 g www.emberftp.com/#stuff/docs/programming 没那么难 然而!现在考虑将此应用程序扩展为两个浏览器视图,类似Windows命令。其中一个视图当前正在浏览/stuff/docs/programming,另一个视图是/backup/images 显然,这在某种程度上需要多个出口,但URL会发生什么变化 首先,这是否得到支持?如果是,应该如何设置路由和序列化/反序列化?那么URL实际上是什么样子的呢 baseUrl/#?浏览器1=/stuff/docs/programming&browser2=/backup/imagesJavascript 在余烬中保持多个状态,javascript,url-routing,ember.js,Javascript,Url Routing,Ember.js,考虑使用Ember编写的ftp浏览器应用程序。它可能有一个层次结构的树状视图和一个当前所选文件的列表视图。并将当前选择存储在URL中,如下所示: baseUrl/#路径 e、 g www.emberftp.com/#stuff/docs/programming 没那么难 然而!现在考虑将此应用程序扩展为两个浏览器视图,类似Windows命令。其中一个视图当前正在浏览/stuff/docs/programming,另一个视图是/backup/images 显然,这在某种程度上需要多个出口,但URL
也许?余烬路由器将更新浏览器的URL以反映当前应用程序状态。这样做是为了用户可以通过URL返回或共享其当前状态。需要注意的是,路由器在给定时间只能处于一种状态 路由器就是使用序列化和反序列化来重新创建它的状态。这基本上是将当前应用程序状态转换为可共享URL的想法,反之亦然。要解决您发布的问题,您可能需要一个模型,让我们称之为
窗口
,它有许多浏览器
。然后,当您通过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\u id”Ember路由器将更新浏览器的URL以反映当前应用程序状态。这样做是为了用户可以通过URL返回或共享其当前状态。需要注意的是,路由器在给定时间只能处于一种状态 路由器就是使用序列化和反序列化来重新创建它的状态。这基本上是将当前应用程序状态转换为可共享URL的想法,反之亦然。要解决您发布的问题,您可能需要一个模型,让我们称之为
窗口
,它有许多浏览器
。然后,当您通过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”。路径是指向任何ftp服务器上任何位置的任意路径。这不可能有一个预定义的状态。在某种程度上,两个路径都必须序列化到URL,在反序列化哪个路径属于哪个浏览器时,这一点很明显。问题是,当URL只影响状态树中的一条路径时,很明显如何安排URL,但如果它需要影响多条路径呢?我们需要的是以一种对Ember有意义的方式描述URL上的层次数据。我想人们总是可以用base64编码json结构,但是……没错。因此,找到一种方法来序列化
窗口
对象,这样就可以通过输入URL来重新创建它。这可以是base64或url编码的路径列表。整个想法是一个URL可以用来重新创建/创建对象和状态。路径是指向任何ftp服务器上任何位置的任意路径。这不可能有一个预定义的状态。在某种程度上,两个路径都必须序列化到URL,在反序列化哪个路径属于哪个浏览器时,这一点很明显。问题是,当URL只影响状态树中的一条路径时,很明显如何安排URL,但如果它需要影响多条路径呢?我们需要的是以一种对Ember有意义的方式描述URL上的层次数据。我想人们总是可以用base64编码json结构,但是……没错。因此,找到一种方法来序列化窗口
对象,这样就可以通过输入URL来重新创建它。这可以是base64或url编码的路径列表。整个想法是,URL可用于重新创建/创建对象和状态。