从Ember Pre1到Pre4:每条路线有多个动态段?更新:动态细分的允许语法是什么?

时间:2013-02-08 15:04:12

标签: ember.js

我目前正在尝试将基于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
  }
});

出了什么问题? 当应用程序进入状态时,URL无法正确更新。我看到了这个结果:

  

/ =体裁:流派/排序=:排序/位置=:位置/范围=:范围/时间=:日期/ 6:00-19:00

因此,我的大多数动态细分都没有得到更新。我确保我的自定义序列化方法返回一个适当的哈希对象,其中设置了每个动态段的一个属性。

使用pre4仍然可以为每条路线设置多个动态细分,还是必须切换到某种路径嵌套方式?

更新:找到根本原因: 我刚刚发现错误的发生是因为我用于路由的语法。我将其更改为以下内容(将“=”替换为“/”):

this.route("formCreated", { path: "/genre/:genre/sorting/:sorting/location/:location/range/:range/time/:date/:timeFrame" });

是否有关于如何构建路径的文档?似乎自ember-pre1以来语法已经发生了变化。我想有一个用户友好的URL和那些大量的斜杠使其难以阅读。或者规则是,段始终必须以“:/”开头?

1 个答案:

答案 0 :(得分:0)

您需要使用资源嵌套,如描述herehere

App.Router.map(function() {
    this.route('/');
    this.resource('genre', { path: '/genre/:genre_id' }, function(params) {
        this.resource('sorting', { path: '/sorting/:sorting_id' }, function(params) {
            ...
        });
     });
});