this.controller не определен в классе Route

Я разрабатываю SPA с использованием EmberJS последней версии 1.7.0, согласно Ember docs, маршрут содержит свойство, которое содержит ссылку на контроллер, но всегда возвращает undefined во всех моих маршрутах.

ApplicationRoute = Ember.Route.extend({
  queryParams: {
      tsk: {
          // Opt into full transition
          refreshModel: true
      }
  },
  model: function(params) {
      var task = {"name" : "task"};

      this.controller.set('currentTask',task);
      return task;
  }
});

а также по другому маршруту

SubfileRoute = Ember.Route.extend({
  model : function(params) {

      console.log(this.controllerName);
      console.log(this.controller);

  }
});

и то и другое console.log(this.controllerName); а также console.log(this.controller); не определены,

как правильно работать с контроллерами ember? единственный способ, который, кажется, работает - через this.controllerFor()

Обновить:

Я также пытался использовать этот метод:

needs:'application',
currentTask : Ember.computed.alias('controllers.application.currentTask'),

но также currentTask всегда неопределен, так как сам контроллер.

1 ответ

Решение

Если вы хотите установить свойства на контроллере, вы должны использовать хук setupController:

model: function(params) {
  return {"name" : "task"};
},

setupController: function(controller, task) {
  controller.set('currentTask',task);
}
Другие вопросы по тегам