2012-04-25 15 views
0

私はdojox.widget.Standbyを使用しようとしています。他のコードが実行されている間にスタンバイを表示し、完了すると非表示にします。しかし、私はstandby.hide()を呼び出すと、私のスタンバイだけが表示されるようです。コード:dojox.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で自分のウィジェットを示していますが

答えて

2

はいショーと非表示の呼び出しの間にラップされたコードは、同期xhrget/xhrpost ajax呼び出しで発生しますか? sync = trueの場合、ブラウザのすべてのアクションが完全に停止するため、スタンバイアニメーションは、ahax()を呼び出しているときに、ajaxの呼び出しが完了した後で本当にすばやく表示され、非表示になります。そうであれば、複数の呼び出しが同期して動作する必要がある場合は、それらを非同期にして応答関数で連鎖させることができます。

0

クロームない:

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

クレイグしかし、私はそれを解決していない恐れがあります。事を見るためにはまだstandby.hide()を呼び出さなければなりません –

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要素の高さも、スタンバイスタートアップ時に0より大きいことを確認してください。 正常に動作するスタンバイはよくありますが、高さがないか幅がないか、またはどちらもない要素の内部にあるため、最終的に何も表示されません。

関連する問題