2014-09-10 66 views
0

我正在使用dojo 1.8創建應用程序。使用dojo在窗體上顯示成功/失敗消息

我有一個窗體與按鈕來執行一些操作。一旦完成操作,我就會得到後端進程執行狀態。目前我正在使用警報框來提醒用戶關於狀態的信息。我知道,這是非常老式的。所以我想要的是:如果狀態是「成功」,那麼我將在窗體頂部顯示一條消息(綠色文本),否則顯示錯誤消息(紅色)。

對於在HTML文件中,我創建了兩個div

<div id="successNotification" data-dojo-attach-point="successNotification"></div> 
<div id="failureNotification" data-dojo-attach-point="failureNotification"></div> 

,並在postCreate方法,request.invokePluginService的requestCompleteCallback方法,我想設置DIV標籤的innerHTML。 但下面的代碼總是會導致「成功通知未定義」錯誤。

if (ifSuccess == 'true' || ifSuccess) 
{ 
    var successNotification = dijit.byId("successNotification"); 
} 

在同一塊我用dijit.byId(「一些其他組件」),並且工作正常。

我做錯了什麼?

+0

'dijit.byId'被檢索的dijits,你應該使用** 「道場/ DOM」 **模塊即'dom.byId'調用,而不是檢索DOM。有關詳細信息,請參閱[http://dojotoolkit.org/reference-guide/1.10/dojo/dom.html] – frank 2014-09-10 13:19:38

+0

如果使用dom.byId,則值始終爲空。 – 2014-09-11 06:09:51

回答

1

我在這裏注意到幾件事情。首先,您的if代碼看起來不正確(在true之後有')。

然後,如果你正在創建自定義部件,你不應該通過檢索其ID,窗口小部件或DOM節點,這意味着你應該兼用:

  • dijit.byId()
  • dojo.byId()
  • dojo/dom::byId()
  • dijit/registry::byId()

正確的方法是使用通過使用data-dojo-attach-point屬性創建的連接點。當您從dijit/_TemplateMixin繼承mixin時,您可以簡單地使用:this.successNotification,如果您也繼承dijit/_WidgetsInTemplateMixin,那麼您可以使用相同的語法來檢索窗口小部件實例。

你的情況,那就是:

if (ifSuccess) { 
    var successNotification = this.successNotification; 
} 
+0

缺少引號(')是一個錯字錯誤。該解決方案有點改變。由於我必須訪問回調方法中的元素,因此無法直接使用「this」對象訪問它。所以我必須將「this」對象的引用存儲在變量中,然後使用該變量訪問該元素。 – 2014-09-11 09:59:39

相關問題