我正在使用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总是未定义的,所以作为控制器它自己。
答案 0 :(得分:5)
如果要在控制器上设置属性,则应使用setupController挂钩:
model: function(params) {
return {"name" : "task"};
},
setupController: function(controller, task) {
controller.set('currentTask',task);
}