我在使用spin.js在数据加载到屏幕上之前显示微调器。 我有几个标签。每次,我点击一个标签,它显示微调器,我在函数内部保持stopSpin(),这样当数据加载时,微调器将停止。
这在正常情况下运行良好。用户单击选项卡 - Spinner启动 - 数据加载 - 旋转器停止。
但是当我点击一个标签并在那一刻点击其他标签时,微调器继续旋转。这个微调器是我点击的第一个标签。它没有让完整的功能运行,当我点击其他选项卡时,新的微调器被加载并停止。但第一个标签微调器继续旋转......
有没有办法检查我是否可以看到微调器最初是否正在运行并且如果它正在运行则停止它。
** \ $(“#rpt21 a.keepopen”)。click(function(){ \ $( “#report_panel”)HTML( “”)。 \ $( “#report_panel,#report_header,#report_panel_alldata,#report_header_alldata”)隐藏();
$get_parameters;
startSpin();
x = getDataForRpt(rmanager,manager,account,folderdate,pricedate,"buy_list","$tmp_rpt_folder","$tmp_rpt","runRpt");
\$("#report_panel").show();
});**
**
function getDataForRpt(rmanager,manager,account,folderdate,pricedate,rpt_name,tmp_folder,tmp_rpt,action)
{
var perlURL= "$thiscode";
\$.ajax({
url: perlURL,
data: {rmanager: rmanager,
manager: manager,
account: account,
folderdate: folderdate,
pricedate: pricedate,
rpt_name: rpt_name,
tmp_folder: tmp_folder,
tmp_rpt: tmp_rpt,
action: action
},
success: function(result) {
if(result.isOk == false){
alert("no data");}
//\$("#report_panel").load("$url_link/webtmp/$tmp_rpt");
\$("#report_panel").html("<object data='$url_link/webtmp/$tmp_rpt' , type='text/html' width=97% height=100%></object>");
//\$("#report_panel").html('<object data="http://apmqa.mcm.com/webtmp/web_table_rpt.html" type="text/html" width=1000 height=500 ></object>');
//\$("#report_panel").load("http://apmqa.mcm.com/webtmp/test_web_table_rpt.html");
stopSpin();
},
});
}
**
您可以在此处看到我在单击选项卡时使用了启动旋转。有几个这样的函数,每个函数都有startSpin()。
getDataForRpt很常见。所以我在那里保留了一个stopSpin()。
答案 0 :(得分:0)
我得到了答案。如果有人想知道,就在这里。
**function startSpin(){
startSpin.called = true;
var target = document.getElementById('spin_container');
var spinner = new Spinner(opts).spin(target);
\$('#spin_container').data('spinner', spinner);
}**
插入startSpin.called = true;在主函数和类型下面我们想要微调器加载的地方。这样,它将检查微调器是否处于活动状态。如果处于活动状态,它将首先停止原始微调器,然后继续执行下一个函数。
**if (startSpin.called){
stopSpin();`enter code here`
} **