2014-09-10 108 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

相关问题