2

我正在尝试将我的应用程序迁移到新的 emberjs 路由 API。

对于旧路由器,我有一些解决方法可以为由 ID 保存的对象和由一组参数描述的新对象提供类似的 URI。这样做是为了能够在用户之间交换指向对象的链接,而无需永久保存它。这是来自我的应用程序的两条简化的有效路线:

/objects/12                   // fetch object by id (/objects/:object_id)
/objects/<serialized params>  // build new object from params (/objects/:params)

这两条路由都类似于路由器,因为它们都有动态部分,静态部分是相等的。所以我写了customRouteMatcher来接送正确的路线。缺乏查询字符串解析迫使我将这个破解作为快速和半合法的解决方案,在 github 上也有关于这个功能的古老票证。

随着新的路由器匹配已被提取到单独的包(路由识别器),所以我无法做到这一点(否则它将充满黑客和注入)。

如我所见,我必须从以下选项中进行选择:

  • 完全重写我的 URI 并分离所有相交的路由
  • 重写 URI,但尝试为新的 Ember.Router 实现查询字符串解析器
  • 将所有逻辑放入一条路线并仅重新实现序列化/反序列化方法(有些脏东西)

第二种解决方案似乎更干净。

什么是最好的不复杂的决定?我应该尝试另一种方式吗?

4

1 回答 1

5

当前路由器不支持查询字符串参数。

我们正在https://github.com/emberjs/ember.js/issues/1773跟踪这个错误。您可能想关注它。

同时,您最好的选择可能是使用动态段并手动序列化(使用serialize钩子)和反序列化(使用model钩子)。

于 2013-01-14T18:44:50.690 回答