在Route类中未定义this.controller

时间:2014-09-29 11:42:56

标签: javascript ember.js ember-router ember-controllers

我正在使用EmberJS最新的1.7.0开发SPA, 根据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 个答案:

答案 0 :(得分:5)

如果要在控制器上设置属性,则应使用setupController挂钩:

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

setupController: function(controller, task) {
  controller.set('currentTask',task);
}