2015-05-03 3 views
0

У меня есть правило [потребности] в нескольких контроллерах, который работает что-то вроде:Нужды массив не работает на маршруте (пока работает в контроллере)

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

Это позволяет мне подобрать идентификатор клиента, мне нужно как параметр для модели в моем маршруте clientss.client [: id] .sessions. Это довольно чертовски уродливо, но он полностью работает в контроллере. В маршруте, однако, этот почти идентичный код:

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

... не решился. Все вычисленные значения остаются «неопределенными». Может ли кто-нибудь помочь мне понять, почему?

Примечание: Я также с удовольствием включил бы другой способ достижения этой же цели более компактным образом ... модель, которую я решаю, является вложенным маршрутом, где параметр «вверх по стеку» «необходимо для решения модели. В моем случае client.id необходим как параметр в запросе модели для сеансов.

ответ

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')); 
    } 
} 
Смежные вопросы