2013-11-04 59 views
0

我有一个登录控制器在接受或拒绝时调用方法。这里是被拒绝的代码片段:从回调获取控制器实例

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

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

更新:

其值得注意的是,该控制器引用本身,即登录控制器包含authFailed这是从认证请求后Ajax回调调用。

回答

2

如果您正在使用jQuery的AJAX,你可以设置上下文选项使用context: this控制器,所以then方法的回调,将有this像控制器实例。

Probally你就会有这样的事情:

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 ... 
});