3

我正在尝试创建一个自定义函数,每次服务器发送响应时都会调用该函数。我可以使用以下代码在 Extjs3 中成功执行此操作:

Ext.override(Ext.data.Connection, { 
    handleResponse : function( response ) {
        console.log('function call');
    }
});

我想知道我需要改变什么才能让这段代码在 Extjs 4.2.0 中工作?

谢谢,Y_Y

4

2 回答 2

4

您实际上不需要覆盖或扩展任何内容。的文档Ext.data.Connection显示它触发了三个事件。其中两个是requestcomplete请求成功时requestexception触发,请求失败时触发。

现在,请参阅Ext.util.Observable.observe演示如何捕获给定类的所有事件的文档。例子:

Ext.util.Observable.observe(Ext.data.Connection, {
    requestcomplete: function(conn, response, options){
        // Do stuff on success
    },
    requestexception: function(conn, response, options){
        // Do stuff on failure
    }
});

这就是您获取所有Ext.Ajax请求的所有完成事件的方式。在内部,该observe方法使用该capture方法,因此您必须releaseCapture在清理时调用您的类。

于 2013-05-20T19:43:03.420 回答
2

查看 Extjs 4.2.0 库文件 Connection.js 我注意到没有声明像在 Extjs 3.2.1 中声明的“handleResponse”函数。相反,Extjs 4.2.0 有一个“onComplete”功能。覆盖这个函数让我能够在“requestcomplete”之前处理一些事情,类似于覆盖“handleResponse”。

于 2013-05-21T00:38:36.173 回答