需求数组无法在路线中工作(在控制器中工作时)



我在几个控制器中具有 [需求] 规则,其工作类似于:

const { computed } = Ember;
export default Ember.Controller.extend({
  needs: ['controller:clients','controller:clients/client'],
  relationship: computed.alias('controllers.clients/client.model'),
  client: computed.alias('relationship.giver'),
}

这使我可以在我的" clients.client [:id] .sessions'route中,我需要将我需要的客户ID作为 model 函数的参数。它非常丑陋,但在控制器中完全可以使用。但是,在路线中,这几乎相同的代码:

const { computed } = Ember;
export default Ember.Route.extend({
  needs: ['controller:clients','controller:clients/client'],
  relationship: computed.alias('controllers.clients/client.model'),
  client: computed.alias('relationship.giver'),
}

...无法解决。所有计算的属性都"未定义"。谁能帮我理解为什么?

注意:我也很乐意以更紧凑的方式结合其他方法来实现相同的目标...我要解决的模式是一条嵌套的路线,其中需要参数为"堆栈"解决模型。在我的情况下

路由不支持needs构造。您可以在setupController中使用controllerForafterModel/model/setupController挂钩中的modelFor。所有这些都是假设您要访问的控制器/模型是在父路由/资源中。

export default Ember.Route.extend({
  setupController: function(controller, model){
    this._super(controller, model);
    this.set('client', this.controllerFor('foo').get('model.relationship.giver'));
    this.set('client', this.modelFor('foo').get('relationship.giver'));
  }
}

最新更新