Emberjs新的路由和查询字符串或自定义路由匹配器

kon*_*ung 2 ember.js

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

使用旧路由器,我有一些解决方法,为ID保存的对象和由params描述的新对象提供类似的URI.这样做是为了能够在不永久保存用户的情况下交换链接到用户之间的对象.这是我的应用程序中的两条简化有效路线:

/objects/12                   // fetch object by id (/objects/:object_id)
/objects/<serialized params>  // build new object from params (/objects/:params)
Run Code Online (Sandbox Code Playgroud)

这两条路线都类似于路由器,因为它们都有动态部件,静态部件相同.所以我写了自定义RouteMatcher拾取正确的路线.缺乏查询字符串解析迫使我做这个hack作为快速和semilegal解决方案,在github上也有关于此功能的古老票据.

随着新的路由器匹配被提取到单独的包(路由识别器),所以我不能做到这一点(或者它将充满黑客和注入).

我可以看到我必须从以下选项中进行选择:

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

第二种解决方案似乎更清洁.

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

Yeh*_*atz 5

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

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

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