データの読み込み中にモーダル ダイアログを表示しようとしています。フローは次のようになります。
showProgressBar();
$.ajaxSetup({
async: false
});
loadData(file);
$.ajaxSetup({
async: true
});
removeProgressBar();
私もこれを試しました:
$.ajaxSetup({
async: false
});
$(document).ajaxStart(function(){
showProgressBar();
});
loadData(file);
$.ajaxSetup({
async: true
});
$(document).ajaxStop(function(){
removeProgressBar();
});
私の関数は次のようになります。
function showProgressBar(){
var theBody = d3.select("body")
.append("div")
.attr("title", "Processing")
.attr("class", "ui-widget-content uncollapsebox")
.attr("id", "progressDialog")
.append("div")
.attr("id", "progressbar")
.attr("width",200)
.attr("height",20)
$(function() {
$( "#progressbar" ).progressbar({
value: false
});
});
$(function() {
$( "#progressDialog" ).dialog({modal: true,
closeOnEscape: false
});
});
}
function removeProgressBar(){
$('#progressDialog').dialog('close');
$('#progressDialog').remove();
}
私のロードファイルは次のようになります。
function loadData(nameOfFile){
$(function(){
$.getJSON("...",function(data){
}).error(function(){
console.log('error loading data!');
});
});
console.log("done with getJSON");
}
私は多くのバリエーションを試しましたが、モーダルが表示されていないか、表示されていて削除されていないか、表示されていると次のエラーが表示されます。メソッド「close」を呼び出そうとしました。show および remove 関数は、コンソールなどから呼び出された場合に問題なく動作します。
ps async: false を使用します。これは、ロードの直後にデータを計算するためです。もちろん、そうしないと、すべてのデータがロードされるのを待ちません。