如何正确覆盖Extjs4中的Ext.data.Connection?

时间:2013-05-20 18:12:26

标签: extjs4

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

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

我想知道为了让这段代码在Extjs 4.2.0中运行我需要更改什么?

谢谢,Y_Y

2 个答案:

答案 0 :(得分:3)

您实际上不需要覆盖或扩展任何内容。 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

答案 1 :(得分:2)

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