【问题标题】:get params from nested routing in ember从ember中的嵌套路由获取参数
【发布时间】:2014-10-29 15:56:01
【问题描述】:

这是我在 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"} 

但 zip 路线的 url 类似于 /makes/Acura/ILX。所以我应该得到 Division_id 和 model_id。

我无法在 params 中获取 division_id。

示例应用完成于:http://jsbin.com/jujene/36/edit

【问题讨论】:

  • 我相信这是不可能的,子路由无权访问父路由参数。您必须获取父路由的模型,并以这种方式获取 id。
  • 嗨 Mike1o1,你能解释一下如何获取父路由

标签: ember.js parameters params nested-routes


【解决方案1】:

不确定这是否正是您想要的。在您的路线中,您可以使用Route.modelFor获取父模型

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

由于模型路由可以访问参数,您可以通过这种方式在模型上设置它。这样,Model Route 就建立了一个模型。

然后,在你的邮编路线上:

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,这是您的稍微清理过的副本。

【讨论】:

  • zip 无法读取未定义的属性“设置”类型错误:无法读取未定义的属性“设置”
  • 你从哪里得到的?我没有时间一直清理 JSbin,但是如果我从头开始并单击链接,则不会出现该错误。无论哪种方式,上述技术都是您访问父模型的方式。
  • 仍然当我返回参数时,我只得到模型 ID,但在控制台日志中我也可以看到部门 ID。我如何访问视图中的 m 变量
  • 在您的 Zip 路由中,访问 Model 模型(因此也可以访问部门 id),然后您可以将该属性添加到您的 Zip 模型中。
  • 我更新了 JSbin 以显示如何在 zip 路由上设置分区 id,以及如何将数据绑定到它。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-01-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-01-10
相关资源
最近更新 更多