layui edit時候checkbox渲染時好時壞
阿新 • • 發佈:2018-12-11
使用layui來做後臺管理,遇到一個很奇葩的問題:
在list頁面列出了所有的記錄,然後點選編輯,彈出一個新頁面來顯示需要修改的欄位,然後裡面有幾個checkbox,使用
body.find("#dwServiceMode1").prop("checked",edit.dwServiceMode==1);
來選中,在回撥success:中使用子頁面的form.render()來渲染,然後就出問題了,有事可以渲染,有時又不能渲染;
折騰了一天,最終定位來渲染的時序上,只是沒有渲染出來,但是值還是已經傳到子頁面的對應的屬性裡面了;
最終的解決方案:
在子頁面中定義渲染的方法,父頁面成功的回撥中呼叫子頁面的渲染方式,完美解決了這個bug
function edit(edit){ var index = layer.open({ title : "新增", type : 2, content : "addUI", success : function(layero, index){ var iframeWindow = layero.find('iframe')[0].contentWindow; var body = layui.layer.getChildFrame('body',index); body.find("#dwGameID").html('<option value=""></option>' + gameOption); body.find("#dwGameRoomID").html('<option value=""></option>' + roomOption); body.find("#gameData").val(JSON.stringify(gameData)); if(edit){ body.find("#dwBatchID").val(edit.dwBatchID); body.find("#dwServiceMode").val(edit.dwServiceMode); body.find("#dwAndroidCount").val(edit.dwAndroidCount); body.find("#dwGameID").val(edit.dwGameID).prop('disabled',true); body.find("#dwGameRoomID").val(edit.dwGameRoomID).prop('disabled',true); body.find("#dwGameName").val(edit.dwGameName).prop('disabled',true); body.find("#dwGameRoom").val(edit.dwGameRoom).prop('disabled',true); body.find("#lTakeMinScore").val(edit.lTakeMinScore); body.find("#lTakeMaxScore").val(edit.lTakeMaxScore); body.find("#dwEnterMinInterval").val(edit.dwEnterMinInterval); body.find("#dwEnterMaxInterval").val(edit.dwEnterMaxInterval); body.find("#dwLeaveMinInterval").val(edit.dwLeaveMinInterval); body.find("#dwLeaveMaxInterval").val(edit.dwLeaveMaxInterval); body.find("#dwSwitchMinInnings").val(edit.dwSwitchMinInnings); body.find("#dwSwitchMaxInnings").val(edit.dwSwitchMaxInnings); body.find("#AndroidCountMember0").val(edit.AndroidCountMember0); body.find("#dwServiceMode1").prop("checked",edit.dwServiceMode==1); body.find("#open").attr("checked",edit.open==1); } iframeWindow.reRender(); } }) layui.layer.full(index); //改變視窗大小時,重置彈窗的寬高,防止超出可視區域(如F12調出debug的操作) $(window).on("resize",function(){ layui.layer.full(index); }) }