0

我的页面中有一个名为 EDIT 的对话框按钮。

第一次点击 EDIT 按钮时,会出现 EDIT 弹出窗口。当我通过单击位于弹出窗口右上角的关闭 (x) 按钮关闭弹出窗口并再次单击编辑按钮时,弹出窗口没有出现(打开)。但是在单击位于同一“编辑”弹出窗口下方的“取消”和“应用”按钮并第二次单击“编辑”后,弹出窗口将打开。所以点击关闭按钮后出现问题,不允许我再次打开编辑窗口。

更新:

我发现代码(如下)不允许我第二次打开“编辑”对话框,我对其进行了评论。但是评论代码引起了另一个问题,即当我单击“取消”或“应用”按钮时,它会抛出以下错误,并且不允许我通过抛出相同的错误再次打开“编辑”按钮。

4

3 回答 3

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.)
 */
于 2013-03-13T10:31:20.273 回答
0

在创建对话框之前,请添加以下代码:

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();
                    }

它会在创建它之前每次销毁小部件。

于 2013-03-14T09:35:00.560 回答
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 );
              }));
于 2016-03-25T18:40:22.060 回答