在DWZ开发过程当中常常会遇到的一种状况就是:在navTab页面中经过a标签打开一个dialog,在dialog层进行操做后,须要对该dialog层进行必要的刷新操做。我将方法整理在这里,请须要学习的孩子们看看哦。javascript
1.首先讲一下思路:java
在非dialog页面中,也就是navTab页面中,将传递rel的值做为刷新的途径。在那种状况下,rel值为navTab的navTabId,因此在dialog中,只要将dialogId获取到,并做为rel值在dialog层传递便可。ajax
2.其次给你们看看个人操做图:json
图1-点击navTab上的修改,进入一级dialog页面服务器
图2-点击一级dialog的修改操做,进入二级dialog的详情修改页面数据结构
说明:个人操做就是:打开navTab上的修改页面,显示一个dialog层的列表信息,而后再在一级dialog上点击修改,打开二级dialog,在二级dialog上修改完毕后,关闭当前的二级dialog,而后刷新一级dialog。函数
3.步骤:学习
(1)在a连接中指定rel值(即将打开的dialog层的ID):this
1 <a href ="score.do?method=goQueryRuleDetail" target="dialog" rel="firstDialogId" width="950" height="380" title="标题">修改</a>
(2)在dwz.dialog.js中修改部分代码($.pdialog上一行):url
var currentDialogId = "";//2013-07-19 lucky add
1 open:function(url, dlgid, title, options) { 2 currentDialogId = dlgid;//新增部分,赋值 3 var op = $.extend({},$.pdialog._op, options); 4 var dialog = $("body").data(dlgid); 5 ……
1 ,getcurrentDialogId:function(){//获取当前窗口ID 2 return currentDialogId; 3 },
(3)一级dialog页面,修改连接:
1 <a href="score.do?method=goModifyPage" target="dialog" id="goToModify">修改</a>
1 <script type="text/javascript"> 2 $(function(){ 3 var currentDialogId = $.pdialog.getcurrentDialogId();//获取当前窗口的ID 4 var tempHref = $("#goToModify").attr("href"); 5 $("#goToModify").attr("href",tempHref + "&rel="+currentDialogId); 6 }); 7 </script>
(4)通过后台的传递,二级dialog页面也已经有rel的值了。此时,要写一个二级dialog提交后的回调函数。在dwz.ajax.js里面添加以下代码:
1 /**2013-07-19 lucky add 2 * dialog层之上的dialog(二级dialog)表单提交回调函数 3 * 服务器回转dialogId,能够从新载入指定的dialogId,statusCode=DWZ.statusCode.ok表示操做成功, 自动关闭当前dialog 4 * form提交后返回json数据结构,json格式和navTabAjaxDone一致 5 * @param json 6 */ 7 function dialogLayerAjaxDone(json){ 8 DWZ.ajaxDone(json); 9 if (json.statusCode == DWZ.statusCode.ok){ 10 if (json.dialogId){ 11 var dialog = $("body").data(json.dialogId); 12 $.pdialog.reload(json.forwardUrl, {dialogId: json.dialogId}); 13 } 14 $.pdialog.closeCurrent(); 15 } 16 }
(5)二级dialog表单form回调函数:
onsubmit="return validateCallback(this, dialogLayerAjaxDone);"
注:二级dialog提交至后台后,后台需指定forwardUrl(重载URL)和dialogId(须要刷新的一级dialogId),返回的JSON数据格式为:
1 { 2 "statusCode":"",//状态代码 3 "message":"", 4 "dialogId":"",//须要刷新的一级dialogId 5 "callbackType":"", 6 "forwardUrl":"", 7 "url":"", 8 "urldata":"" 9 }
到这里差很少结束了。有问题的再用firebug调试调试吧。
学习建议: