我在几个控制器中有 [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 作为会话的模型查询中的参数。
答案 0 :(得分:1)
路由不支持needs
构造。您可以controllerFor
使用setupController
,也可以modelFor
/ afterModel
/ model
个setupController
使用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}}