DWZ關閉navTab后刷新指定的navTab


舉例來說, 進入首頁->點擊用戶列表出現"用戶列表"navTab->在"在用戶列表"navTab中點擊添加出現"添加用戶"navTab->添加完成並關閉"添加用戶"navTab,並刷新"用戶列表"navTab 這個流程

首先在首頁進入"用戶列表"navTab的鏈接中要指定這個navTab的rel屬性,如下,這個navTab的rel屬性被指定為main

<a href="user/userlist.html" target="navTab" rel="main">用戶列表</a>

然后,在"添加用戶"這個navTab的html代碼中需要指定提交表單后需要返回的函數,如下,

onsubmit="return validateCallback(this, navTabAjaxDone)",提交后執行了validateCallback(),在這個函數中又執行了navTabAjaxDone()這個函數
<form method="post" action="user/douseradd.html?navTabId=useraddnavTab&callbackType=closeCurrent" class="pageForm required-validate" onsubmit="return validateCallback(this, navTabAjaxDone)">

下面找到navTabAjaxDone()這個函數

function navTabAjaxDone(json){
    DWZ.ajaxDone(json);
    if (json[DWZ.keys.statusCode] == DWZ.statusCode.ok){
        if (json.navTabId){ //把指定navTab頁面標記為需要“重新載入”。注意navTabId不能是當前navTab頁面的
            navTab.reloadFlag(json.navTabId);
        } else { //重新載入當前navTab頁面
            var $pagerForm = $("#pagerForm", navTab.getCurrentPanel());
            var args = $pagerForm.size()>0 ? $pagerForm.serializeArray() : {}
            navTabPageBreak(args, json.rel);
        }

        if ("closeCurrent" == json.callbackType) {
            setTimeout(function(){navTab.closeCurrentTab(json.navTabId);}, 100);
        } else if ("forward" == json.callbackType) {
            navTab.reload(json.forwardUrl);
        } else if ("forwardConfirm" == json.callbackType) {
            alertMsg.confirm(json.confirmMsg || DWZ.msg("forwardConfirmMsg"), {
                okCall: function(){
                    navTab.reload(json.forwardUrl);
                },
                cancelCall: function(){
                    navTab.closeCurrentTab(json.navTabId);
                }
            });
        } else {
            navTab.getCurrentPanel().find(":input[initValue]").each(function(){
                var initVal = $(this).attr("initValue");
                $(this).val(initVal);
            });
        }
    }
}

其他具體功能在這里不過多解釋,重點是下列代碼

if (json.navTabId){ //把指定navTab頁面標記為需要“重新載入”。注意navTabId不能是當前navTab頁面的
            navTab.reloadFlag(json.navTabId);
        }
可以看出,這里會判斷服務器后台返回的json中是否有navTabId這個字段,如果有就調用navTab.reloadFlag(json.navTabId)這個函數刷新指定的navTab
就需要在服務器回傳的json中加入navTabId,並將值設為要刷新的navTab的rel值,已上面的舉例就是main

 


免責聲明!

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



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