论坛首页 Web前端技术论坛

近期的ext项目总结

浏览 56679 次
该帖已经被评为良好帖
作者 正文
   发表时间:2009-03-16  
来仔细研究下了。。
0 请登录后投票
   发表时间:2009-03-18  
在做页面时JS的调试是一个比较麻烦的事,有没有什么好的工具可以用。
0 请登录后投票
   发表时间:2009-03-19  
第一次就做成这样了就已经很不错了啊
0 请登录后投票
   发表时间:2009-05-14  
收藏,等做完实验性项目之后再学习
0 请登录后投票
   发表时间:2009-10-18  
Artkai 写道
kstg750718 写道
Artkai 写道
jef 写道
Artkai 写道
c)注册Ext.Ajax的requestcomplete事件,每个ajax请求成功后首先响应该事件(概念类似spring的aop拦截)。

这个如何注册??能否给点代码??


类似这样,假如checkUserSessionStatus是你的回调方法,每个页面引用:
Ext.Ajax.on('requestcomplete',checkUserSessionStatus, this);
function checkUserSessionStatus(conn,response,options){
	//Ext重新封装了response对象
	if(typeof response.getResponseHeader.sessionstatus != 'undefined'){
		//发现请求超时,退出处理代码...
	}
}

 

 这样的话,requestcomplete事件就不能用了,我们项目中是重载Ext.data.Connection类的handleResponse方法:

if(Ext.data.Connection){ 
    Ext.override(Ext.data.Connection,{ 
        handleResponse : function(response){ 
            var resultData = response.responseText;
            if('logout'==resultData){ 
                alert("未登陆或过期,请重新登陆");
                window.self.close(); 
                return; 
            } 
            this.transId = false; 
            var options = response.argument.options; 
            response.argument = options ? options.argument : null; 
            this.fireEvent("requestcomplete", this, response, options); 
            Ext.callback(options.success, options.scope, [response, options]); 
            Ext.callback(options.callback, options.scope, [options, true, response]); 
        } 
    }); 
}

 

感觉重载handleResponse方法还是比较巧妙..赞..


嘿嘿~~ 原来是没打算再说的,但是发现还是有兄弟赞同我的,所以我再给个更优雅的方法吧,无意中研究出来的:^_^

Ext.override(Ext.data.Connection, {
			handleResponse : Ext.data.Connection.prototype.handleResponse.createInterceptor(
		function(response) {
			var resultData = response.responseText;
            if('logout'==resultData){ 
                alert("未登陆或过期,请重新登陆");
                window.self.close(); 
                return false; 
            }
			return true;
		})
		});

  handleResponse的createInterceptor方法是在方法执行前运行,返回false后面的方法就不执行了,要继续执行就返回true。

还有个createSequence方法是在方法执行后运行,这两个方法差不多就构成了ext基本的AOP了哟^_^

 

照您的思路,做实验,firefox报错。

提示:Ext.data.Connection.prototype.handleResponse 未定义!!!

 

通过firefox 的firebug查看DOM发现 Ext.data.Connection.prototype中.handleResponse 确实未定义,故不能创建 Intercptor。

请详细回答下,谢谢



0 请登录后投票
   发表时间:2009-11-09  
最近也是在使用ext 做一个项目,但是使用到SSH时,运行太慢了。
0 请登录后投票
   发表时间:2009-11-11  
给一个Extjs grid导出Excel的通用版本,解决了Ext Grid导出Excel在JSP等环境中文乱码问题(支持Windows和Aix):
http://blog.csdn.net/weoln/archive/2009/11/02/4758861.aspx
0 请登录后投票
论坛首页 Web前端技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics