洛枫学院

洛枫学院 » UI前端 » DWZ中刷新dialog的方案解决

页码: 1

DWZ中刷新dialog的方案解决

- 一片云 2020-11-24 10:43

在DWZ中进行ajax表单提交后,通过回调函数来返回状态结果,以及返回是否需要刷新父页的navTabId。
DWZ给我们提供了两个回调函数,一个是子窗口为navTab的navTabAjaxDone,一个是子窗口为dialog的dialogAjaxDone,但这两个回调函数都有同一样的缺陷:就是父窗口必须是navTab,也就是说只能刷新navTab,如果父窗口为dialog,则此父dialog是刷新不了的。
如果我们是在一个弹出的dialog中,进行添加、删除和修改操作,操作完成后,这个dialog是无法刷新的。删除就在此dialog中完成,删除后只刷新不关闭当前dialog。添加和修改操作可能要再弹出一个dialog来完成,也就是说出现了二级dialog,操作完成后,需要关闭当前子dialog,刷新父dialog。
对于这种情况 ,我们自己再添加一个回调函数,来适应这种情况需要。
打开DWZ.ajax.js这个文件,找到dialogAjaxDone这个函数,在它的下方,我们添加一个新回调函数,假设取名为dialogAjaxDoneFather;

代码 复制 - 运行

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

这样我们在dialog中进行ajax表单提交,就可以使用这个dialogAjaxDoneFather回调函数了。
删除操作:
callback="dialogAjaxDoneFather"
添加和修改的Form标记中
onsubmit="return validateCallback(this, dialogAjaxDoneFather)"
在回调json中,注意一定要返回需要刷新的父dialog的id,即
"navTabId":"dialogId"

页码: 1