2013-03-13 89 views
0

我的页面中有一个名为EDIT的对话框按钮。点击右上角关闭(x)按钮后DOJO对话框不会再打开

首次单击EDIT按钮时,出现EDIT弹出窗口。当我通过点击位于弹出窗口右上角的Close(x)按钮关闭弹出窗口并再次点击EDIT按钮时,弹出窗口不会出现(打开)。但是,点击同一个'EDIT'下方的'CANCEL'和'APPLY'按钮弹出窗口,然后再次点击EDIT,弹出窗口打开。因此,点击关闭按钮后出现问题,不允许我再次打开编辑窗口。

UPDATE:

我发现的代码(如下),这是不是让我打开“编辑”对话框中的第二个时间,我评论了。但评论代码导致了另一个问题,即当我点击'CANCEL'或'APPLY'按钮时,它抛出以下错误,并且不允许我通过抛出相同的错误再次打开'编辑'按钮。

+0

尝试创建的jsfiddle或代码后只有相关的部分工作示例得到一些asnwer ... – Gatekeeper 2013-03-13 09:47:24

+0

对不起。我删除了可能不相关的额外.js文件。 – 2013-03-13 09:56:44

回答

0

您正在销毁关闭的小工具(destroyOnClose : true),因此无法在第二次尝试时打开。

/* 
* Overload the _destroyOrHide method in rmt.NewModalPopup so 
* that the popup will be destroyed instead of closed. (Close 
* doesn't remove the DOM node.) 
*/ 
+0

我也尝试更改(destroyOnClose:false)。即使这样,弹出窗口也没有第二次打开。 – 2013-03-13 10:44:15

+0

你是通过代码(_destroyOrHide)来检查并确认它实际上并没有销毁idget? – 2013-03-13 12:09:46

+0

_destroyOrHide方法甚至在我点击关闭按钮时没有被调用。而是调用close()方法。我在主屏幕中提到了方法定义作为更新。 – 2013-03-13 23:28:42

0

Befre创建对话框,请添加以下代码:

if (dojo.byId('displayQualificationPane') != null) { 
         dojo.forEach(dijit.findWidgets(dojo.byId('displayQualificationPane')), function (w) { 
          w.destroyRecursive(); 
         }); 
        } 
        dojo.destroy(dojo.byId('displayQualificationPane')); 
        if (dijit.byId('displayQualificationPane')) { 
         dijit.byId('displayQualificationPane').destroy(); 
        } 

它会创建之前销毁控件每次。

+0

我试过了。不成功。编辑按钮不打开第二次。 – 2013-03-15 00:43:43

+0

已更新。在主窗口中发布它。 – 2013-03-15 02:04:10

+0

嘿..你需要添加销毁小部件的代码(我现在已经评论过)。从(x)按钮关闭对话框后再次打开对话框时出现的错误是什么? – 2013-03-15 04:43:53

0

另一种类似于Himani的推荐,但可能更易于使用的技术是确保在调用hide函数后对话内容被销毁。这样,初始化组件时就不必对此进行任何复杂的检查。

hide: function() { 
    this.inherited(arguments); 
    window.setTimeout(dojo.hitch(this, 'destroyRecursive'), 500); 
} 

或者甚至

aspect.after(dialog, 'hide', dojo.hitch(this, function() { 
         setTimeout(function() { 
          dialog.destroyRecursive(); 
         }, 500); 
       })); 
相关问题