Extjs窗口等待对话框关闭问题

时间:2011-05-17 14:46:07

标签: extjs

亲爱的朋友。我在关闭窗口时遇到了问题。我正在调用这样的ajax调用

function callPreviewWindow(){   
    $.ajax( {
    type : "GET",
    url : "/ajax/eform/preview.do",
    cache : false,
    dataType : "text/html",
    timeout: 40000,
              beforeSend : function() {
        showWaitingDialog("Please wait...");
    },

    error: function (xhr, err)
    {
        resolveAjaxError(xhr, err);
    },
    success : function(data) {  
         showPreviewWindow(data);

    }
 });    

}

但是这个ajax调用执行需要花费更多时间,因此将超时时间增加到40000.并且它正常工作并显示以下窗口。

function showPreviewWindow(htmlData){
var previewWindow =  new Ext.Window({
        title: "E-Form View",  
        width:650,
        id:'previewWindow',
        autoHeight: true,
        html: htmlData,
        modal: true,
        y: 150,
        listeners: { 
        beforeclose: function () { 
            searchVisible = false;                      
          } 
        },
      buttons: [
                 { 
                     text: 'Close', handler: function() {
                      previewWindow.close();                                            
                     }
                 }
                ]
 });

previewWindow.show(this);               

}

但问题是当点击关闭按钮时,我可以关闭窗口。但showWaitingDialog(我在ajax调用函数中发送事件之前调用的)没有关闭。

请点击关闭按钮,帮我关闭它。

提前致谢。 沙迪亚

1 个答案:

答案 0 :(得分:0)

看起来对话框和窗口没有链接。因此,在您的关闭处理程序中,您还需要关闭对话框以及窗口。如何执行此操作将取决于showWaitingDialog()函数正在执行的操作 - 但您可能需要存储对该方法中创建的对话框的引用,然后在您的close处理程序中调用对话框中的方法(如对话框) .close())也解雇了。这可能需要您修改showWaitingDialog()方法以返回对对话框的引用:

function showWaitingDialog() {
    // dialog is created as normal

    // add something like this
    return dialog;
}

然后修改对话框启动器并关闭处理程序以使用存储的对话框:

// Dialog reference will be stored here    
var dialog;

function callPreviewWindow(){   
    $.ajax( {
        type : "GET",
        url : "/ajax/eform/preview.do",
        cache : false,
        dataType : "text/html",
        timeout: 40000,
        beforeSend : function() {
            // Store reference
            dialog = showWaitingDialog("Please wait...");
        },
        error: function (xhr, err) {
            resolveAjaxError(xhr, err);
        },
        success : function(data) {  
            showPreviewWindow(data);
        }
    }); 
}

function showPreviewWindow(htmlData){
    var previewWindow =  new Ext.Window({
        title: "E-Form View",  
        width:650,
        id:'previewWindow',
        autoHeight: true,
        html: htmlData,
        modal: true,
        y: 150,
        listeners: { 
        beforeclose: function () { 
            searchVisible = false;                      
          } 
        },
        buttons: [{ 
            text: 'Close', handler: function() {
                previewWindow.close();
                dialog.close();                                            
            }
        }]
    });

    previewWindow.show(this);     
}