2016-07-16 88 views
1

我正在通過ajax提交表單並返回解析返回值之前呈現頁面的Dojo中的單頁應用程序。當我談到這個時,我最終會遇到一個定時錯誤。Dojo時間問題與dijit /註冊表和dojo/domReady

當通過腳本標籤包含以下代碼,它記錄未定義:

require(["dijit/registry", 'dojo/domReady!'], function(registry){ console.log(registry.byId('my-id')) }); 

當我將其粘貼在控制檯中,我得到預期的dijit小部件。

我懷疑問題是這是在頁面呈現之前觸發。是否有一種簡單的方法來確保在當前文檔被完全解析幷包含在主窗口中之後發生這種情況?

回答

2

可能是您應該嘗試添加Parser並在嘗試訪問小部件之前調用Parser.parse()

這是Dojo文檔

注意,等待dojo/domReady!火災與部件工作時往往是不足夠的 。很多部件應該初始化或 訪問,直到以下模塊加載和執行:

  • 道場/ uacss
  • 的dijit/hccss
  • 道場/分析器
+0

哦,我倒有一些否則調用解析器,如果我調用它兩次,Dojo不喜歡這樣。 –

+0

也許我應該使用setInterval重試,直到找到它? –

+0

我會接受這個答案,因爲它引導我走上正確的軌道,即認識到這裏一定存在競爭條件,只需檢查/重試直到找到。 –