在ember中保持多个状态

时间:2012-10-08 21:02:12

标签: javascript url-routing ember.js

考虑使用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 = /备份/图片

也许?

1 个答案:

答案 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”。