2

我正在使用 EmberJS 最新 1.7.0 开发 SPA,根据 Ember 文档,该路由包含一个包含对控制器的引用的属性,但它始终在我的所有路由中返回未定义。

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 总是未定义的,所以它自己的控制器。

4

1 回答 1

5

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

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

setupController: function(controller, task) {
  controller.set('currentTask',task);
}
于 2014-09-29T12:18:54.767 回答