我目前正在尝试将基于 pre1 的 Ember 迁移到当前版本 pre4。在我的 pre1-code 中,我定义了如下路线:
formCreated : Ember.Route.extend({
route : '/genre=:genre/sorting=:sorting/location=:location/range=:range/time=:date/:timeFrame',
....
})
这条路线对我来说很好,但现在我正在努力用 pre4 模仿这种行为。这是我的方法:
App.Router.map(function() {
this.route("/");
this.route("formCreated", { path: "/genre=:genre/sorting=:sorting/location=:location/range=:range/time=:date/:timeFrame" });
});
App.FormCreatedRoute = Ember.Route.extend({
serialize: function(context, params){
// here i am returning a hash containing all the dynamic segments
}
});
出了什么问题? 当 App 进入状态时,URL 没有正确更新。我看到了这个结果:
/流派=:流派/排序=:排序/位置=:位置/范围=:范围/时间=:日期/6:00-19:00
所以我的大部分动态片段都没有更新。我确保我的自定义序列化方法返回了一个适当的哈希对象,其中为每个动态段设置了一个属性。
pre4 是否仍然可以使用每条路线多个动态段,还是我必须切换到某种路线嵌套方法或类似的方法?
更新:找到根本原因: 我刚刚发现错误是由于我用于路由的语法而发生的。我将其更改为以下内容(将“=”替换为“/”):
this.route("formCreated", { path: "/genre/:genre/sorting/:sorting/location/:location/range/:range/time/:date/:timeFrame" });
是否有任何关于如何构建路径的文档?自 ember-pre1 以来,语法似乎发生了变化。我希望有一个用户友好的 URL,而那些众多的斜杠使其难以阅读。或者是规则,段总是必须以“:/”开头?