【问题标题】:ExtJS call controller method inside Ext.util.Observable.observeExtJS 在 Ext.util.Observable.observe 中调用控制器方法
【发布时间】: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(...)fireEventundefined,因为函数的scopedata.Connection

不想想使用:

var mainController = App.app.getController('App.controller.Main');

因为当调用 init 被触发时,我遇到了两次触发事件的问题。

我是ExtJS 的新手,所以我确信有更好的方法来做到这一点。感谢任何建议。

【问题讨论】:

    标签: extjs extjs4 extjs4.1 extjs4.2


    【解决方案1】:

    您可以将scope 添加到侦听器配置中:

    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
    });
    

    现在,您的侦听器将使用该范围而不是调用方范围执行。

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-04-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多