显示 dojo 简单对话框时出错

Posted

技术标签:

【中文标题】显示 dojo 简单对话框时出错【英文标题】:get error when showing dojo simple dialog 【发布时间】:2014-09-06 14:26:42 【问题描述】:

我写了一个点击函数来显示一个简单的道场对话框,但它显示的是

NO_FAST_DRAW = 假

这实际上适用于 Nexus 4、5 和其他设备 - 但不适用于三星 Galaxy S2。

 on(dojo.byId("send_email"), "click", function() 
            
                    console.log("emailClicked1");
                    dijit.registry.byId("emailDialog").show();
                    dojo.byId("emailsText").value="";
                    dojo.byId("dialogFlag").value="emailDialog";
                    console.log("emailClicked2");
            );

我可以看到控制台电子邮件 Clicked1 和 2,但在 UI 中也看不到对话框。

<div id="emailDialog" data-dojo-type="dojox.mobile.SimpleDialog">
        <form id="emailDialogForm">
            <div id="emailDialogText">
                <p class="blue_text" style="text-align: left;">To:</p>
                <input id="emailsText" type="email"
                    style="line-height: 2em; width: 95%; margin: 3px; border: none; padding: 2px; font-size: 0.65em;"
                    placeholder="Enter email ID (Separate multiple IDs by ,)" />
            </div>
            <div class="button_grid">
                <input type="submit" id="submitEmail" value="Send" /> <input
                    type="button" id="cancelEmail" value="Cancel" />
            </div>
        </form>
    </div>

【问题讨论】:

【参考方案1】:

在onclick函数处理程序中,对话框的“show()”动作是异步的。因此,任何处理对话框内容的代码都需要在 show() 完成后完成。即,需要处理延迟的操作。

console.log("emailClicked1");
var def = dijit.registry.byId("emailDialog").show();
if(def) 
 def.then(function(success) 
   dojo.byId("emailsText").value="";
 );

dojo.byId("dialogFlag").value="emailDialog";
console.log("emailClicked2");

【讨论】:

以上是关于显示 dojo 简单对话框时出错的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 dojo 和 struts2 在对话框中显示异步获取的信息?

onEnded 事件未在 dojo 对话框中触发

是否可以在 dojo 的对话框/模态对话框中显示拆分容器?

Xpages 无法弹出 dojo 工具提示对话框

使用 mfc 对话框显示 .bmp 图像时出错

单击右上角的关闭(x)按钮后,DOJO 对话框未第二次打开