我的页面中有一个名为EDIT的对话框按钮。
首次单击“编辑”按钮时,将出现“编辑”弹出窗口。当我通过单击弹出窗口右上角的关闭(x)按钮关闭弹出窗口并再次单击再次单击编辑按钮时,弹出窗口不会出现(打开)。但是,在同一个“编辑”弹出窗口中单击位于下方的“取消”和“应用”按钮并再次单击“编辑”后,将打开弹出窗口。因此,单击关闭按钮后出现问题,该按钮不允许我再次打开EDIT窗口。
更新:
我发现代码(如下所示)不允许我第二次打开“编辑”对话框并对其进行了评论。但是注释代码会导致另一个问题,即当我点击“取消”或“应用”按钮时,它会抛出以下错误,并且不允许我通过抛出相同的错误再次打开“编辑”按钮。
答案 0 :(得分: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.)
*/
答案 1 :(得分: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();
}
每次创建它之前都会销毁它。
答案 2 :(得分: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 );
}));