今天做项目时,有这么一个要求,如上图所示,这个是miniui的tree页面,该页面上一共有三个使用iframe嵌在一起的功能页面,当我点击不同的页面时,父页面唯一的一个iframe的src便指向哪个页面的地址,假设我在产品登记表单页面中编辑了一些内容,但是我没有进行提交,这是我再去点击同业授信信息或者企业授信台账信息时,之后再回到产品登记表单页面就会出现之前编辑的一些内容全部没有了,整个登记页面的内容已经被初始化了。那么解决这个问题的思路就是在你去点击其他页面时,你需要将当前页面编辑的数据保存到一个全局变量中,比如session,或者父页面的全局变量中等。我这里解决的办法是将数据存储在父页面的一个全局变量中,之后在回到登记表单页面时,我将数据取出来重新放进登记表单页面。
父页面选择节点的方法加上这段代码
function onNodeSelect(e) {
//存放数据,将data定义存放全局变量
if(iframe.id=="mainframe" || iframe.id=="303"){
//如果iframe.id=mainframe或者是303,则表明它是从编辑页面离开的
data= iframe.contentWindow.GetData();//取出数据
data = mini.clone(data); //这个方法必须要,不然ie8没法通过,话说ie8是真的坑
//获取数据
params.dataAssetsDefine=mini.clone(iframe.contentWindow.GetDataAssetDefine());
}
if(node.id=="mainframe" || node.id=="303"){
//如果node.id=mainframe或者是303,则表明它要进编辑页面中
node.url=('xxx.jsp?operType='+isMainTradeOperType+'&row='+JSON.stringify(data));//通过将数据格式化成字符串放进url中
}
iframe.src = node.url;//设置iframe的src
iframe.id=node.id;//设置iframe的id
}
子页面中需要自己定义GetDataAssetDefine()方法,这个方法主要是获取当前页面的表单内容,之后在下一个判断将数据嵌入进url就好了,因为比较忙,这里就当记了个笔记吧