从ember中的嵌套路由获取参数

时间:2014-10-29 15:56:01

标签: ember.js parameters params nested-routes

这是我在ember中创建的嵌套路由。

App.Router.map(function(){
 this.resource('makes', function(){
   this.resource('model', {path: ':division_id'}, function(){
     this.resource('zip', {path: ':model_id'});
   });
 });
 this.resource('spec', {path: '/makes/:division_id/:model_id/:zipcode'});
});

在我记录参数时的ziproute中,这是我得到的输出。

Object {model_id: "ILX"} 

但是拉链路线的网址就像是/ makes / Acura / ILX。所以我应该得到division_id和model_id。

我无法在params中获得division_id。

示例应用程序在:http://jsbin.com/jujene/36/edit

完成

1 个答案:

答案 0 :(得分:1)

不确定这是否正是您的目标。在您的路线中,您可以使用Route.modelFor

获取父模型
App.ModelRoute = Ember.Route.extend({
     model: function(params){
       console.log('model params', params);
        return { id: params.division_id};
   },
});

由于模型路径可以访问参数,因此您可以在模型上设置它。这样,模型路线就建立了一个模型。

然后,在你的拉链路线上:

App.ZipRoute = Ember.Route.extend({

    model: function(params){
      var m = this.modelFor('model');
      console.log('division id', m.id);
      console.log('zip params', params);
      params.division_id = m.id;
     return params;
   }

});

请参阅更新后的示例JSbin,这是您的略微清理副本。