首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Dojo对话框: show不是一个函数

Dojo对话框: show不是一个函数
EN

Stack Overflow用户
提问于 2014-01-20 14:44:29
回答 2查看 1.1K关注 0票数 0

我有以下代码:

代码语言:javascript
复制
        function handlesomeObjDelete(someObj) {
            query('#someObj-delete-link-'+someObj.id).on('click',function(){
                var youSureDlg = new Dialog({
                    title: 'Delete someObj',
                    width:'250px',
                    id:'delete-someObj-dlg'+someObj.id,
                    content:'Are you sure you want to delete this someObj?'
                });

                var yesBtn = new Button({
                    label: 'Yes',
                    type: "button"
                }); 

                var noBtn = new Button({
                    label: 'No',
                    type: "button"
                }); 

                on(yesBtn,'click',function(){
                    request("someUrl/"+someObj.id, {
                        handleAs: "json",
                        type:'delete',
                        headers: {
                          "X-Requested-With": "",
                          "Content-Type": 'application/json; charset=utf-8'
                        }
                    }).then(function(){
                        alert('deleted');
                    });
                });

                on(noBtn,'click',function(){
                    youSureDlg.hide();
                });

                yesBtn.placeAt(youSureDlg);
                noBtn.placeAt(youSureDlg);

                //youSureDlg.startup();
                youSureDlg.show();
            });
        }

我得到了以下错误:

代码语言:javascript
复制
TypeError: refNode is null
packs[name] = packageInfo;

TypeError: youSureDlg.show is not a function
dojoSniffConfig

我包括了dijit.Dialog。如果我再次尝试创建对话框,我会得到:尝试向id==someid注册小部件,但该id已经注册

知道有什么不对吗?

谢谢。

EN

回答 2

Stack Overflow用户

发布于 2014-01-20 14:57:39

试着这样做:

代码语言:javascript
复制
                  if(!youSureDlg){
        var youSureDlg = new Dialog({
            title: 'Title',
            id: "someID",
            content: "",
            style: "width:250pt",
        });
        youSureDlg.show();
                   }

                   else {
                         youSureDlg.show();
                          }

对话框是独立的,它是一个独立的盒子,不需要绑定到另一个div或其他地方。

看看这个:http://dojotoolkit.org/reference-guide/1.9/dijit/Dialog.html#dijit-dialog

希望它能帮到你。

UPDATE1:错误“试图注册.”当您想要启动一个没有被删除或在使用之后注销的小部件时,就会发生这种情况。您可以通过检查小部件是否已经存在来处理这一问题。检查我的密码-我已经更新了。

还可以查看下面的旧文章:Dojo dialog close event on X (top-right)Dojo and unregistering widgets

你好,米里亚姆

票数 0
EN

Stack Overflow用户

发布于 2014-01-21 02:58:39

它似乎找不到您的源引用节点。这就是小部件代码锚定的地方。新Dialog 'yousuredlg‘中的第二个参数应该是html中的实际div。

例如。

代码语言:javascript
复制
<div>
    <div id="yousuredlg"></div>
    <button id="goButton">Go</button>
</div>

JS

代码语言:javascript
复制
require(["dojo", "dijit", "dijit/Dialog", "dojo/on"], function (dojo, dijit, Dialog, on) {
    var youSureDlg;
    on(dojo.byId("goButton"), "click", function () {
        if (!youSureDlg) {
            youSureDlg = new Dialog({
                title: 'Title',
                width: '250px',
                id: 'someid',
                content: 'some content'
            }, 'yousuredlg');
        }
        youSureDlg.show();
    });

})

http://jsfiddle.net/d2sa5/

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21236825

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档