【发布时间】:2014-07-07 15:40:54
【问题描述】:
我的 4.2.1 ExtJS 应用程序监听每个 Ajax 请求 (Ext.data.Connection),因此我可以进行自定义错误处理和其他事情。
我在我的Main Controller 中这样做
Ext.define('App.controller.Main', {
extend: 'Ext.app.Controller',
init: function (application) {
var me = this;
this.control({
'[xtype=login] button#btnLogin': {
click: me.onLogin
},
});
Ext.util.Observable.observe(Ext.data.Connection, {
requestcomplete: function (conn, response, options) {
// Do stuff on success
},
requestexception: me.handleRequestException // Do stuff on failure
});
},
handleRequestException: function (conn, response, options) {
var me = this;
if (response.status == 401) {
// here i need to fire the logoutApplication method
// have tried: me.fireEvent('logoutApplication'); but fireEvent is undefined because "me" scope is data.Connection
// it doesnt know about the controller.
}
},
logoutApplication: function () {
var me = this;
// do somestuff here!!
}
在handleRequestException 函数内部我试图做me.fireEvent(...) 但fireEvent 是undefined,因为函数的scope 是data.Connection。
我不想想使用:
var mainController = App.app.getController('App.controller.Main');
因为当调用 init 被触发时,我遇到了两次触发事件的问题。
我是ExtJS 的新手,所以我确信有更好的方法来做到这一点。感谢任何建议。
【问题讨论】:
标签: extjs extjs4 extjs4.1 extjs4.2