论坛首页 Web前端技术论坛

打造Ext2.0模块化单页系统(二)

浏览 12920 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2008-04-20  
可能上次表述有问题, 右边整体是个tabpanel(沿用了你的例子), 定义了一个panel作为子tab页, 该tab根据左边的机构树节点来载入相应的grid


问题是子tab页第一次载入grid后, 好像就缓存了该grid, 无论我点击左边任何一个节点,
右边tab页加载的grid都不会刷新数据, 一直显示为第一次加载的grid数据

部分代码如下

		
nodeClick : function(node, event) {	

			Ext.get("nodeId").value=node.id;

			this.loadMask.show();
				Ext.Ajax.request( {					
			method : 'GET',
			url : 'extjs/module/module1.js',

				scope : this,
				success : function(response) {
					var module = eval(response.responseText);
					this[this.tab1.id]=new module(this.tab1);					
					this.body.activate(this.tab1);
					this.body.doLayout();
					this.loadMask.hide();
						},
				failure : function(response) {
					Ext.Msg.alert("错误", this.tab1.id + " 加载失败!");
					// Ext.Msg.show("错误",t.id.toString());
					this.loadMask.hide();
				}
					});
				}
});


附上问题截图
  • 大小: 1.3 MB
0 请登录后投票
   发表时间:2008-04-20  
huaandylau 写道
可能上次表述有问题, 右边整体是个tabpanel(沿用了你的例子), 定义了一个panel作为子tab页, 该tab根据左边的机构树节点来载入相应的grid


问题是子tab页第一次载入grid后, 好像就缓存了该grid, 无论我点击左边任何一个节点,
右边tab页加载的grid都不会刷新数据, 一直显示为第一次加载的grid数据

部分代码如下

		
nodeClick : function(node, event) {	

			Ext.get("nodeId").value=node.id;

			this.loadMask.show();
				Ext.Ajax.request( {					
			method : 'GET',
			url : 'extjs/module/module1.js',

				scope : this,
				success : function(response) {
					var module = eval(response.responseText);
					this[this.tab1.id]=new module(this.tab1);					
					this.body.activate(this.tab1);
					this.body.doLayout();
					this.loadMask.hide();
						},
				failure : function(response) {
					Ext.Msg.alert("错误", this.tab1.id + " 加载失败!");
					// Ext.Msg.show("错误",t.id.toString());
					this.loadMask.hide();
				}
					});
				}
});


附上问题截图

url : 'extjs/module/module1.js',

这里的问题
0 请登录后投票
   发表时间:2008-04-20  
goodboy  能具体说明吗?
0 请登录后投票
   发表时间:2008-04-20  
看看搂主的源代码,这里的1应该是变量吧,如果用1,打开哪一个tab也是module1.js的数据阿
0 请登录后投票
   发表时间:2008-04-21  
有空我会做个你这种界面的样例。
0 请登录后投票
   发表时间:2008-04-22  
针对上次出现的问题,找到了出错原因所在, 即在原先的单页模式中, 每次加载一个js, 会把该js中的compoment add到main中(负责加载的父窗口), 上次我所实现的, 是重复加载同一个grid, 只是每次加载的数据不同, 这样, 造成每加载一次, main中就增加一个grid, 所以造成我只看到第一次加载的grid数据, 其实, 第二次,第三次等结果是依次排列在下面的

目前的一种处理方式是在event handle时, 先将container中已经加载的compoment remove
然后, 重新加载
0 请登录后投票
   发表时间:2008-04-23  
麻烦楼主给做个demo样例吧,做惯了传统的frame框架,jsp之间怎么传值之类的。ext的模式实在是不好理解。挺迫切的。感谢楼主了。
0 请登录后投票
   发表时间:2008-04-26  
您好microboat,我初学Ext,请问Ext做界面的话用什么做后台啊,一般是jsp&servlet么?如果和Struts,Tapestry等Web框架整合的话,容易做到么?能不能提供个思路啊?谢谢!
0 请登录后投票
   发表时间:2008-04-29  
这样做是挺好,我就是这样做的,左边一个根据数据库菜单资源生成的树,对应右边激活相应的TAB,页面不缓存,且已经实现加载对应JS,嵌套页面WINDOW调用,返回数值等功能。例如用户查选择框就是一个单独的页面调用,但是调试起来就很麻烦,必须得用上firebug和IE Develop toolbar。

还有一个问题,就是这样动态加载,似乎所有ext-gen-id都没有释放过(用过了还是能拿到该id),用久了会不会资源泄露?期待结果
0 请登录后投票
   发表时间:2008-04-29  
不是hide而是autodestroy的话,会泄露
0 请登录后投票
论坛首页 Web前端技术版

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