2012-04-25 41 views
0

我試圖使用dojox.widget.Standby。我希望在執行其他代碼的同時顯示待機狀態,然後隱藏一次完成。但是,我的待機似乎只有在我打電話給standby.hide()時纔會顯示。代碼如下:dojox.Standby不顯示,直到.hide()被調用

standby = new dojox.widget.Standby({ 
    target : "map-id" 
}); 

     <div id="map-id" class="centerPanel" 
     data-dojo-type="dijit.layout.ContentPane" 
     data-dojo-props="region: 'center', style: 'width: 1300px;'"> 
     <span id="toolbar"></span> 
     <div id="co-ords" style="position:absolute; bottom:0px; z-index:1000; font-size:8; font-weight:bold; background-color: #FFFFFF"></div> 
    </div> 

任何人都知道發生了什麼事?我也在努力用dojo.connect來捕捉onShow事件...

dojo.connect(standby, "onShow", function(){ 
    console.log("standby onShow"); 
}) 

謝謝!

更新 - 調用standby.hide()顯示我在FireFox插件而不是Chrome瀏覽器

回答

2

不包裝在顯示和隱藏調用之間的代碼碰巧是同步的xhrget/xhrpost ajax調用?當sync = true時,所有瀏覽器操作完全停止,因此在調用完ajax調用完成後,待機動畫只會顯示和隱藏,同時調用.hide()。如果是這樣,並且您有多個需要同步操作的調用,那麼您可以將它們設置爲異步並將它們鏈接到它們的響應函數中。

0

我發現,我總是需要添加以下行創建備用部件時:

dojo.body().appendChild(standby.domNode); 
+0

乾杯克雷格,但我恐怕還沒有解決它。仍然需要調用standby.hide()來查看事情 – 2012-04-25 14:25:19

0

如果你真的需要synchoronous調用,而不是使用待機,你可以嘗試做這樣......

dojo.byId('loading_status').innerHTML='Loading 0%...'; 
sync_ajax_call_1(); 
dojo.byId('loading_status').innerHTML='Loading 25%...'; 
sync_ajax_call_2(); 
dojo.byId('loading_status').innerHTML='Loading 50%...'; 
sync_ajax_call_3(); 
dojo.byId('loading_status').innerHTML='Loading 75%...'; 
sync_ajax_call_4(); 
dojo.byId('loading_status').innerHTML='Loading 100%...'; 

dojo.byId也可以用dom.byId被取代或$(jQuery中)或getElementById

0

還確保map-id元素在啓動時的高度等於零。 待機狀態正常工作很常見,但它位於一個沒有高度或寬度的元素內,或者沒有這兩個元素,所以最終沒有任何顯示。