我正在运行ember 1.6.0。 The docs说自1.6.0以来,Ember Route对象上有一个属性,它包含为该路由定义的控制器。我怎么称这个属性,我得到了不确定。
App.PhotosRoute = App.LibraryRoute.extend({
model: function () {
//blah
},
afterModel: function () {
this.controller // => undefined
var _this = this
App.store.find('batch').then(function (batches) {
if (batches.content.length) {
//unrelated note: _this returns "ReferenceError: _this is not defined" here which really confuses me
}
});
}
});
显然我可以做一些像App。容器 .lookup这样糟糕的事情来获取控制器,但我真的想知道为什么我不能只调用控制器属性。
我的两个猜测: a)在模型运行后的某个时刻设置此属性 b)我的路由从EmberRoute以外的路由继承的事实导致了一些问题
另外,顺便说一句,如果有人可以在一些javascript基础上告诉我为什么我所定义的变量“_this”在我的承诺返回的上下文中不可用,那么也将不胜感激
答案 0 :(得分:1)
afterModel
之前调用 setupController
,因此控制器尚未设置,可能会将代码移到那里,请记得致电this._super(model, controller);
。
和ember一样使用getter和setter。