ExtJs在页面上window再调用Window的事件处理

今天在开发Ext的过程中遇到了一个恶心的问题,就是在ext.window页面,点击再次弹出window时,gridpanel中的store数据加载异常,不能正常被加载,会出现缓存,出现该问题,是因为window窗口弹出时,两个window同时存在,并且在两个window交替使用时,需要先将一个窗口关闭,关闭时,会对window的缓存进行清理,这样就能保证store数据的正确加载。分享给大家,供参考。

var actInfoWindow2;
function showCallFlowInfoWindow(flowid, actId) {
	var actWindowHeight1 = window.innerHeight
	|| document.documentElement.clientHeight
	|| document.body.clientHeight;
	if(null != upldWin && undefined != upldWin && "" != upldWin){
		upldWin.close();
	}
	// 异常活动模型
	Ext.define(‘callFlowModel‘, {
		extend: ‘Ext.data.Model‘,
        fields: [{name: ‘instance‘,  type: ‘string‘},
                 {name: ‘flowName‘,  type: ‘string‘},
                 {name: ‘prjName‘,  type: ‘string‘},
                 {name: ‘startTime‘,   type: ‘String‘}]
	});

	callFlowStore = Ext.create(‘Ext.data.Store‘, {
		autoLoad : true,
		model : ‘callFlowModel‘,
		proxy : {
			type : ‘ajax‘,
			url : ‘subflow.do‘,
			reader : {
				type : ‘json‘,
				root : ‘callFlowList‘,
				totalProperty : ‘total‘
			}
		},
	    listeners: {
	        ‘beforeload‘: function (store, op, options) {
	            var params = {
	                //参数
            		flowId : flowid,
            	    id : actId
	            };
	            Ext.apply(store.proxy.extraParams, params);
	        }
	    }
	});

	// 绑定数据模型flowColumns
	var callFlowColumns = [
    	{ text: ‘实例名‘,  dataIndex: ‘instance‘, width:174 },
    	{ text: ‘工程名‘,  dataIndex: ‘prjName‘,width: 174 },
    	{ text: ‘工作流名‘,  dataIndex: ‘flowName‘,width: 174 },
    	{ text: ‘启动时间‘,  dataIndex: ‘startTime‘,width: 174 }
   ];

	callFlowGrid = Ext.create(‘Ext.grid.Panel‘, {
		region : ‘center‘,
		//tbar:querybar,
		id:‘callFlowList‘,
		autoScroll : false,
		border:false,
		//columnLines : true,
		//selModel:selModel,
		//bbar : pageBar,
		columns : callFlowColumns,
		store : callFlowStore,
		loadMask : {
			msg : " 数据加载中,请稍等 "
		}
	});

	if (actInfoWindow2 == undefined || !actInfoWindow2.isVisible()) {
		actInfoWindow2 = Ext.create(‘Ext.window.Window‘, {
			id : ‘actInfoWindow2‘,
			title : ‘活动信息详情‘,
			modal : true,
			closeAction : ‘destroy‘,
			constrain : true,
			autoScroll : true,
			width : 700,
			height : actWindowHeight1 - 300,
			items : [ callFlowGrid ],
			listeners:{
			      beforeclose:function(){
			    	  actInfoWindow2.destroy();
			      }
			}
		});
	}
	actInfoWindow2.show();
}

if(null != upldWin && undefined != upldWin && "" != upldWin){

   upldWin.close();

}

我的问题出现就是因为没有添加上面黄色背景的代码片段导致的错误。供大家参考。两个window交替使用时,需要交替关闭,这样才能保证页面的正常。ExtJs不建议弹出多window同时使用,当然,如果能解决好ExtJs之间的数据交互,也未必不可以。

时间: 07-25

ExtJs在页面上window再调用Window的事件处理的相关文章

JavaScript的三种对话框是通过调用window对象的三个方法alert(),confirm()和prompt()

第一种:alert()方法 alert()方法是这三种对话框中最容易使用的一种,她可以用来简单而明了地将alert()括号内的文本信息显示在对话框中,我们将它称为警示对话框,要显示的信息放置在括号内,该对话框上包含一个"确认"按钮,用户阅读完所显示的信息后,只需单击该按钮就可以关闭对话框.下面来看一个使用alert()方法的例子,代码如下所示: ? 1 2 3 4 5 6 7 8 9 <html> <head> <title>编写html页面<

window.opener调用父窗体方法的用法

应用实例:        function BindWindowCloss() {            $(window).bind('beforeunload', function () {                window.opener.$("form").submit();            });        } window.opener 实际上就是通过window.open打开的窗体的父窗体. 比如在父窗体parentForm里面 通过 window.op

Qt刷新机制的一些总结(Qt内部画的时候是相当于画在后台一个对象里,然后在刷新的时候调用bitblt统一画,调用window的api并不会影响到后面的那个对象)

前段时间做过一个界面刷新的优化,遇到的坑比较多,在这里做一点点总结吧. 优化的方案是滚动滚动条的时候用截屏的方式代替界面全部刷新,优化完成后,界面在滚动时效率能提升大概一倍,背景介绍完毕. 用到最主要的是QT的截屏功能 window原生api会提供截屏滚动的功能.可以用这个ScrollWindowEx这个api.它会根据相应的参数在屏幕中进行滚动相应的区域.是不是很容易?但是结果却是不理想,因为用的是Qt,控件重写过PaintEvent的方法.调用api实时能看到效果,但是触发一次PaintEv

如何把tomcat的日志实时输出到web页面上

最近做了一个web版的自动发布系统.实现了一个把tomcat的catlina.out日志输出到web页面的功能,做出来后,生活美好了一点.码农们不会再为了看日志来烦我了,以后有时间了准备扩展一下,把日志统一收集,过滤,让码农自己玩去,哈哈.作为一个运维狗,自动化一切,然后就有更多时间--了.省略号内容自行脑补. 先看效果 在部署状态页面点击查看日志,将会打开日志页面,下个图就是日志的输出页面. 简约时尚小清新的日志页面出来了,是不是很想一个terminal,有没有觉得俺弄的页面很漂亮.哈哈哈哈,

打开新窗口,window.open 和window.showModalDialog

window.open: window.open是非阻态窗口,也叫非模态窗口,也就是说当你打开window.open这个子窗口后,还可以切换去操作父窗口. 一般的格式是这样的: <span style="font-size:14px;"><strong>window.open('page.html', 'newwindow', 'height=100, width=400, top=0, left=0, toolbar=no, menubar=no, scrol

js实现跨域(jsonp, iframe+window.name, iframe+window.domain, iframe+window.postMessage)

一.浏览器同源策略 首先我们需要了解一下浏览器的同源策略,关于同源策略可以仔细看看知乎上的一个解释.传送门 总之:同协议,domain(或ip),同端口视为同一个域,一个域内的脚本仅仅具有本域内的权限,可以理解为本域脚本只能读写本域内的资源,而无法访问其它域的资源.这种安全限制称为同源策略. ( 现代浏览器在安全性和可用性之间选择了一个平衡点.在遵循同源策略的基础上,选择性地为同源策略"开放了后门". 例如img script style等标签,都允许垮域引用资源.) 下表给出了相对 

使用Js从Excel复制数据粘贴到页面上

在Excel中选择要复制的区域,“复制”后在剪切板中的Text形式内容是以Tab分隔的.要实现“粘贴”的功能,只需要获取剪切板中文本,然后根据换行“\n”得到每行数据,再将行根据“\t”分割得到对应Cell中的数据,赋值给Td中的Element. 这个过程重点是js如何访问到剪切板的内容. 在IE浏览器中可以直接使用window.clipboardData,函数window.clipboardData.getData('Text') 便可以取到.但是在chrome和firefox中就不行了.网上

javascript中window.open()与window.location.href

1.window.location是window对象的属性,而window.open是window对象的方法    window.location是你对当前浏览器窗口的URL地址对象的参考!      window.open是用来打开一个新窗口的函数! 2. 在给按钮.表格.单元格.下拉列表和DIV等做链接时一般都要用Javascript来完成.和做普通链接一样,可能我们需要让链接页面在当前窗口打开,也可能需要在新窗口打开,这时我们就可以使用下面两项之一来完成:     window.open

完善用户体验: 活用window.location与window.open解决页面跳转问题

原文地址: JavaScript Redirects and window.open原文日期: 2014年08月27日翻译日期: 2014年08月31日翻译人员: 铁锚 (译者注: 本文解决的是按 Ctrl键时使用JS打开新页面的问题) 在简化的HTML5规范中,允许在 A 标签内包含多个 DIV 和/或其他块级元素. 现在只要用 <a> 标签包住块元素,就能搞定原来需要用JavaScript来监听并调用 window.location 实现页面跳转(redirect)功能.但使用<a&