从回调中获取控制器实例

时间:2013-11-04 14:20:54

标签: ember.js

我有一个登录控制器,在接受或拒绝时调用方法。这是被拒绝代码的片段:

authFailed: function() {
  var c = App.__container__.lookup("controller:login");
  c.set('errorMessage', 'Authentication Failed');
}

我知道__container__是一个黑客,但直到最近才开始工作。今天我开始使用ember-app-kit开始一个项目,并注意到这不再适用。获取控制器实例的正确方法是什么?

更新

值得注意的是,此控制器引用自身,即登录控制器包含authFailed,在验证请求之后从ajax回调调用。{/ p>

1 个答案:

答案 0 :(得分:2)

如果您正在使用jquery ajax,则可以使用context: this为控制器设置上下文选项,因此then方法的回调将具有this之类的控制器实例。

原则上你会有这样的事情:

App.LoginController = Ember.ObjectController.extend({
  actions: {
    authenticate: function() {
      var username = ... 
      var password = ...
      Ember.$.ajax('user/auth', { data: { username: username, password: password }, context: this }).then(this.authSuccess, this.authFailed);
    }
  },
  authFailed: function() {
    this.set('errorMessage', 'Authentication Failed');
  },
  // more code ...
});
相关问题