ExtJS调用Ext.util.Observable.Observable内的控制器方法

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

我让我的4.2.1 ExtJS应用程序监听每个Ajax请求(
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问题,这让我头疼。你能查一下吗?