0

当用户单击列表框中的箭头时,我有一个 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"); 
4

1 回答 1

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 只会在实际下载过程中短暂出现(假设我们可以在调用 select onOpen 之后挂钩它)。相反,ItemFileReadStore 中的另一个私有方法会派上用场

dojo.connect(select.store._getItemsFromLoadedData, function() {
     dojo.style(dojo.byId('spinner'), "display", "none");
});
于 2012-08-23T12:47:44.413 回答