2013-11-04 87 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 ... 
});