需要数组不在路由中工作(在控制器中工作)

时间:2015-05-03 23:03:14

标签: ember.js ember-data

我在几个控制器中有 [needs] 规则,其工作方式如下:

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"中选择我需要的客户端ID作为模型功能的参数。路线。它非常难看,但它完全适用于控制器。然而,在路线中,这个几乎完全相同的代码:

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'),
}

......无法解决。所有计算出的属性都保留了#34; undefined"。谁能帮我理解为什么?

  

注意:我也很乐意采用其他方式以更紧凑的方式实现同​​一目标...我正在解决的模式是一个嵌套路线,其中参数为&#34 ;堆栈"需要解决模型。在我的情况下,需要 client.id 作为会话的模型查询中的参数。

1 个答案:

答案 0 :(得分:1)

路由不支持needs构造。您可以controllerFor使用setupController,也可以modelFor / afterModel / modelsetupController使用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')); } } 。这是假设您尝试访问的控制器/模型位于父路由/资源中。

{{1}}