【问题标题】:ember route pass dynamic url to child routeember 路由将动态 url 传递给子路由
【发布时间】:2015-07-14 14:14:11
【问题描述】:

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

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

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

【问题讨论】:

    标签: ember.js routes


    【解决方案1】:

    您可以在路由中使用modelFor 并在model(或beforeModelafterModel)挂钩中设置user 控制器属性: 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);
    }
    

    【讨论】:

    • 有没有更好的解决方案?
    • “更好”是什么意思?
    【解决方案2】:

    您可以从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);
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-05-03
      • 2015-03-16
      • 2011-03-13
      • 2016-01-19
      • 1970-01-01
      • 2022-08-09
      • 2016-09-21
      相关资源
      最近更新 更多