easyui-dialog打开多次数据串台问题

Posted hackxiyu

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了easyui-dialog打开多次数据串台问题相关的知识,希望对你有一定的参考价值。

问题:

  公司项目最近在用easyui写后台管理系统,发现dialog使用后总会报出莫名奇妙的问题

  1.打开多次后数据显示上一次的,表单提交错误或者获取数据错误

  2.来回跳转后,会有打开其它dialog的可能,神奇的串台现象

 

排查:

  既然打开dialog为上一次的,那么表明【浏览器加载了多个同id对象,导致浏览器解析加载错误】

  那么,只要保证浏览器存在唯一的对象就能解决这个问题

 

解决方案:

  1.新建一个变量,保存dialog对象,无论那个使用都操作该变量

    结果:经实验,只要调用$(‘#id‘).dialog({...}); 就会构造一个新的dialog对象,开启关闭都要用,多次调用还是会产生多个对象

       网上说该方案可行,我试了试,没啥效果,得大家试了,试好了,麻烦给我留言

  2.打开dialog后,添加关闭事件,执行destroy方法,保证每次打开都是新的

    结果:如果dialog绑定了页面的div,那么打开一次后,再也打不开了,猜想可能是连着这个div的dom对象一次玉石俱焚了。。。。惨!

    可行的解决方案

      js追加dom元素,保证每次打开都追加一个dom对象让他去毁,以下是代码

      应该也可以不声明,直接写,在里边添加关闭销毁事件

//注意:我用的时候是先声明了该变量,指定固定属性
var
dataFile_Dg = $(‘<div></div>‘).dialog({ title: ‘文本文件上报监控详情‘, width: 1000, height: 600, closed: true, cache: false, modal: true, onClose: function () { $(this).dialog(‘destroy‘,true); } });
//在使用该变量的时候,要把固定属性重写一遍,否则打开一次小一次,最后就留个按钮了,请慎重!!!
//详情页 function forwardToDataFileMonitor(bankId) { // alert("详情"); dataFile_Dg.dialog({ title: ‘文本文件上报监控详情‘, width: 1000, height: 600, closed: true, cache: false, modal: true, href: ‘report/static/html/dataFileMonitor/dataFileMonitor.html‘, queryParams:{ Authorization: localStorage.token, bankId: bankId, reportDate: $(‘#reportDate‘).datebox(‘getValue‘) }, }); dataFile_Dg.dialog(‘open‘); }

 

以上是关于easyui-dialog打开多次数据串台问题的主要内容,如果未能解决你的问题,请参考以下文章

在jsp中加入easyui-dialog作为弹出框,点击按钮无法弹出easyui-dialog框

easyui-dialog

easyui-dialog对话框练习

如何优化打开和读取多次相同文件的python脚本?

easyui中radio设置默认checked失效的问题解决方案

QMessageBox 使用快捷键打开多次