X上的Dojo对话框关闭事件(右上角)

Tho*_*sen 11 javascript dojo dialog button

我使用Dojo创建一个简单的对话框来在系统中创建用户.问题是我收到错误:

Tried to register widget with `id==user_submit` but that `id` is already registered
Run Code Online (Sandbox Code Playgroud)

user_submit,是一个Dojo按钮,我必须完成对话框内的表单.当我通过单击并提交表单关闭对话框时,再次打开对话框没有问题(在按钮上的单击事件中,我有这行代码:

dijit.byId("user_submit").destroy();
Run Code Online (Sandbox Code Playgroud)

但是如果我通过右上角的[x] -link /按钮关闭对话框,我不会破坏按钮,然后在不重新加载页面的情况下无法再次打开对话框.

如何让Dojo破坏按钮或如何重载[X] -link /按钮上的click事件,这样我可以为按钮编写destroy命令?

小智 15

"Developer shouldn't override or connect to this method"对于"onCancel",请参阅文档.更好的解决方案是:

var myDialog = new Dialog({
   id: "myDialogId1",
   onHide: function() {
      myDialog.destroy()
   }
});
Run Code Online (Sandbox Code Playgroud)


Tho*_*sen 8

找到了解决方案.通过使用dojo.connect().

myDialog.connect(myDialog, "hide", function(e){
    dijit.byId("user_submit").destroy(); 
});
Run Code Online (Sandbox Code Playgroud)

在我发布quistion之后不久会发布这个,但我没有足够的积分,所以这里的答案又来了,只是有点晚了:-)

  • 推荐的destroy方法是`destroyRecursive` (2认同)