EmberRoute.controller返回undefined

时间:2014-10-14 19:43:26

标签: javascript ember.js

我正在运行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”在我的承诺返回的上下文中不可用,那么也将不胜感激

1 个答案:

答案 0 :(得分:1)

afterModel之前调用

setupController,因此控制器尚未设置,可能会将代码移到那里,请记得致电this._super(model, controller);

和ember一样使用getter和setter。