2

我目前正在尝试将基于 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,而那些众多的斜杠使其难以阅读。或者是规则,段总是必须以“:/”开头?

4

1 回答 1

0

您将需要使用资源嵌套,如此此处所述

App.Router.map(function() {
    this.route('/');
    this.resource('genre', { path: '/genre/:genre_id' }, function(params) {
        this.resource('sorting', { path: '/sorting/:sorting_id' }, function(params) {
            ...
        });
     });
});
于 2013-02-09T22:02:14.063 回答