我有一个Dojo FilteringSelect,当用户单击列表框中的箭头时,大约需要20秒才能从dB加载其值。我想在等待从dB返回数据时显示进度微调器。任何想法,当从数据库中检索数据时,我将使用什么事件来显示我的微调器,以及在完成时隐藏微调器的事件是什么?感谢...
new FilteringSelect({
store: new dojo.data.ItemFileReadStore({ url: "some url here" }),
autocomplete: true,
maxHeight: "300",
required: false,
id: "country_select_id",
onChange: function(data) {
dojo.byId("case_info_status").innerHTML = " ";
}
}, "country_select_id");
答案 0 :(得分:0)
我敢打赌你可以在select._fetchHandle deferred和store._fetchItems中走很长的路。试试这个
var select = new .... Your FilteringSelect Construct( {} );
select._fetchHandle.addCallback(function() {
// success callback
dojo.style(dojo.byId('spinner'), "display", "none");
});
dojo.connect(select.store._fetchItems, function() {
if(select.store._loadFinished) return; // no-op
dojo.style(dojo.byId('spinner'), "display", "block");
});
编辑:
select._fetchHandle只会在实际下载过程中短暂出现(假设我们可以在选择onOpen后调用它)。相反,ItemFileReadStore中的另一个私有方法派上用场
dojo.connect(select.store._getItemsFromLoadedData, function() {
dojo.style(dojo.byId('spinner'), "display", "none");
});