在Route类中未定义this.controller

this.controller is undefined in Route class

本文关键字:this controller 未定义 Route      更新时间:2023-09-26

我正在使用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控制器?唯一可行的方法似乎是通过这个。controllerFor()

更新:

我也尝试过使用这种方法:

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

而且currentTask总是未定义的,因此控制器本身也是如此。

如果您想在控制器上设置属性,您应该使用setupController挂钩:

model: function(params) {
  return {"name" : "task"};
},
setupController: function(controller, task) {
  controller.set('currentTask',task);
}