0

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

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

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

更新:

值得注意的是,该控制器引用了自身,即登录控制器包含authFailed在身份验证请求后从 ajax 回调中调用的控制器。

4

1 回答 1

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 ...
});
于 2013-11-04T14:52:50.200 回答