我正在研究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();
}
});
在控制台中,我得到了很好的结果,在调试时,我可以看到对话框,但是在普通模式下(没有任何断点),对话框根本不会出现。有任何线索吗?
为什么不使用忙碌指示器?
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);
}
});
您可能正在同步发送一些请求,以使浏览器在尝试打开对话框时无法更新DOM *。
jQuery.ajax()
)时:async: false
。jQuery.sap.sjax
。*发送请求同步阻塞浏览器的UI /主线程,这会导致UX错误。通常,Web平台也将其设置为deprecated。