2010-01-20 74 views
1

我試圖讓最初隱藏三個不同的對話框,然後根據來自ajax表單提交的響應,我希望顯示不同的對話框。dojo dijit對話框底圖不顯示

當表單提交併等待響應時,我可以顯示「進行中」對話框。 然後,如果服務器返回錯誤響應,我想隱藏第一個對話框,然後根據錯誤響應類型顯示另一個對話框。

我幾乎可以實現我想要做的事情,除非當我隱藏第一個對話框並顯示下一個對話框時,底襯消失。 如果我在瀏覽器窗口內滾動,底層顯示正確。 我正在做這樣簡單的事情:

dijit.byId("progress_dialog").hide(); 
dijit.byId("error_dialog").show(); 

任何人都有建議嗎?

我在dojo網站上看到以下頁面,但它似乎是dojo 0.9的臨時解決方案? http://www.dojotoolkit.org/forum/dijit-dijit-0-9/dijit-support/showing-dialog-right-after-hiding-another-dialog-while-keeping-u

任何幫助,將不勝感激。

謝謝。

[編輯] 好吧,我已經通過添加下面的一些延遲來「解決」了這個問題。

dijit.byId("progress_dialog").hide(); 
setTimeout(function() { 
    dijit.byId("error_dialog").show(); 
    }, 500); 

這對我有用,但我認爲可能有更好的解決方法。 任何接受者?

[編輯再次] 我使用的版本是道場-1.3.2

+0

你使用什麼版本的dojo? Dojo 1.3在對話底層實現方面有重大變化。 – Kniganapolke 2010-01-21 08:34:54

+0

我的不好。我應該在我的問題中指出它。我使用的版本是1.3.2。 – 2010-01-22 05:06:39

回答

1

出現了各種各樣的與對話在道場1.3底襯的問題,因爲所有對話對象開始使用1個共同底層對象(而不是創建自己的底層)。
我懷疑在你的情況下襯墊被隱藏之前顯示 - 你可以調試,如果你願意;)
作爲解決方法超時是可以的(它可以更少,我猜)。或者你可以嘗試連接到hide方法(但不知道這會幫助):

dojo.connect(dijit.byId("progress_dialog"), "hide", dijit.byId("error_dialog"), "show"); 
dijit.byId("progress_dialog").hide(); 

但是考慮到1.3底襯所有這些問題,我會考慮使用道場1.4,因爲有些補丁的dijit。對話框已被提交:http://docs.dojocampus.org/releasenotes/1.4