ExtJS调用Ext.util.Observable.Observable内的控制器方法
我让我的4.2.1 ExtJS应用程序监听每个Ajax请求(ExtJS调用Ext.util.Observable.Observable内的控制器方法,extjs,extjs4,extjs4.1,extjs4.2,Extjs,Extjs4,Extjs4.1,Extjs4.2,我让我的4.2.1 ExtJS应用程序监听每个Ajax请求(Ext.data.Connection),这样我就可以进行自定义错误处理和其他工作 我在我的主控制器中做这件事 Ext.define('App.controller.Main', { extend: 'Ext.app.Controller', init: function (application) { var me = this; this.con
Ext.data.Connection
),这样我就可以进行自定义错误处理和其他工作
我在我的主控制器中做这件事
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
是未定义的
,因为该函数的作用域是数据.连接
我不想使用:
var mainController = App.app.getController('App.controller.Main');
因为当调用init
时,会触发两次事件
我是新来的ExtJS
,所以我确信有更好的方法来做到这一点。感谢您的建议。您可以在侦听器配置中添加一个范围
:
Ext.util.Observable.observe(Ext.data.Connection, {
requestcomplete: function (conn, response, options) {
// Do stuff on success
},
requestexception: me.handleRequestException, // Do stuff on failure
scope: me // add the scope here
});
现在,监听器将使用该作用域而不是调用方作用域执行。非常感谢。。。很棒的解决方案:)我提出了一个extjs问题,这让我头疼。你能查一下吗?