我在几个控制器中具有 [需求] 规则,其工作类似于:
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
中使用controllerFor
或afterModel
/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'));
}
}