项目中使用dwz框架,有在dialog中进行ajax操作然后自动刷新dialog的需求,但是dwz只支持navTab的刷新,针对dialog的刷新机制则需要扩展,方法如下:
1.在dwz.ajax.js中添加如下js方法
/*在对话框中操作数据,并刷新对话框*/ function dialogAjaxDoneFather(json) { DWZ.ajaxDone(json); if (json.statusCode == DWZ.statusCode.ok) { if (json.navTabId) { var dialog = $("body").data(json.navTabId); $.pdialog.reload(dialog.data("url"), { data: {}, dialogId: json.navTabId, callback: null }) } if ("closeCurrent" == json.callbackType) { $.pdialog.closeCurrent(); } } }
2.在dialog页面的ajax操作链接上添加如下属性
<a href="${ctx}/user/topic/shield?id=${item.id}&navTabId=dlg_userDetail" target="ajaxTodo" callback="dialogAjaxDoneFather" title="确定要屏蔽吗?" style="color:#0000FF">屏蔽</a>
注意,a标签需要指定callback属性,属性值应为第一步添加的那个js方法名称,navTabId值应为当前需要刷新的dialog的id。
3.提交后,后台完成业务逻辑后需要根据dwz的规则返回json数据。
4.至此,已经实现了dialog的刷新机制。