使用dojo在表单上显示成功/失败消息

时间:2014-09-10 11:34:37

标签: javascript dojo

我正在使用dojo 1.8创建一个应用程序。

我有一个带按钮的表单来执行某些操作。完成操作后,我将获得后端进程执行的状态。目前我正在使用警报框来告知用户有关状态的信息。我知道,这是非常老式的。所以我正在尝试的是:如果状态为“成功”,那么我将在表单顶部显示一条消息(绿色文本),否则显示错误消息(红色)。

对于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。 但是下面的代码总是导致“successNotification is undefined”错误。

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

在同一个块中,我使用了dijit.byId(“其他一些组件”)并且工作正常。

我做错了什么?

1 个答案:

答案 0 :(得分: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;
}