我有一个登录控制器,在接受或拒绝时调用方法。这是被拒绝代码的片段:
authFailed: function() {
var c = App.__container__.lookup("controller:login");
c.set('errorMessage', 'Authentication Failed');
}
我知道__container__
是一个黑客,但直到最近才开始工作。今天我开始使用ember-app-kit开始一个项目,并注意到这不再适用。获取控制器实例的正确方法是什么?
更新
值得注意的是,此控制器引用自身,即登录控制器包含authFailed
,在验证请求之后从ajax回调调用。{/ p>
答案 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 ...
});