对话框没有显示

时间:2014-03-06 12:43:31

标签: javascript jquery ajax sapui5

我正在研究sapui5应用程序。我想在ajax请求期间阻止UI表单用户。我添加了以下代码:

    var dialog = new sap.m.BusyDialog({
        text : this.languageModel.getModelProperty("BUSY_DIALOG_FETCHING_DATA"),
        title : this.languageModel.getModelProperty("BUSY_DIALOG_WAIT")
    });
    var that = this;
    jQuery.ajaxSetup({
        beforeSend : function() {
            console.log("open");
            dialog = (dialog) ? dialog : new sap.m.BusyDialog({
                text : that.languageModel.getModelProperty("BUSY_DIALOG_FETCHING_DATA"),
                title : that.languageModel.getModelProperty("BUSY_DIALOG_WAIT")
            });
            dialog.open();
        },
        complete : function() {
            console.log("close");
            dialog.close();
        }
    });

在控制台中我得到了很好的结果,在调试时我可以看到对话框,但在正常模式下(没有任何断点)对话框根本不会出现。任何线索?

2 个答案:

答案 0 :(得分:1)

为什么不使用忙碌指示器?

var oController = this;
oController.getView().setBusy(true);
$.ajax({
    //your ajax call here, 
    success: function(data) {
        //do whatever needs to be done after success;
        oController.getView().setBusy(false);
    },
    error: function(...) {
        oController.getView().setBusy(false);
    }
});

答案 1 :(得分:0)

您可能正在同步发送一些请求,以使浏览器在尝试打开对话框时无法更新DOM *。


*同步发送请求会阻塞浏览器的UI /主线程,从而导致UX错误。网络平台通常也deprecated