ember route将动态url传递给子路由

时间:2015-07-14 14:14:11

标签: ember.js routes

如果我在下面定义了路线:

App.Router.map(function () {
    this.resource('user', {path: "/:user"}, function () {
        this.route('work', {path: "/work"});
    })
});

我可以在用户控制器中获取:user值,但是如何在工作控制器或工作路径中获取此值?

2 个答案:

答案 0 :(得分:2)

您可以在路由中使用modelFor并在user(或modelbeforeModel)钩子中设置afterModel控制器属性: http://emberjs.com/api/classes/Ember.Route.html#method_modelFor

//work route
model: function() {
  return Ember.RSVP.hash({
    user: this.modelFor('user'), // here user is routeName
    work: // your logic here
  });
},

setupController: function(controller, models) {
  controller.setProperties(models);
}

答案 1 :(得分:0)

您可以在setupController挂钩的工作路线中在控制器上设置它:

setupController(controller) {
  controller.set('userId', this.modelFor('user').get('id'));
  return this._super(...arguments);
}
// ES < 6 syntax
setupController: function(controller) {
  controller.set('userId', this.modelFor('user').get('id'));
  return this._super.apply(this, arguments);
}