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'); }

 補充建議:對話框加id

$('<div></div>').dialog({ id: 'uniqId',  //插入該id,作為方法內變量,訪問加該id即可
        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') }, }); $("#uniqId").dialog('open');    

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM