Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/370.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何在dojo中刷新对话框_Javascript_Dojo - Fatal编程技术网

Javascript 如何在dojo中刷新对话框

Javascript 如何在dojo中刷新对话框,javascript,dojo,Javascript,Dojo,我有一个来自对话。一切都能正常工作,但在db中保存数据后,如何刷新输入中的值 是否有技巧刷新整个表单,或者当有人按“取消”按钮隐藏对话框时,我应该使用dialog.reset()?如果只能通过reset()方法完成,那么当按下escape和右上角的关闭十字时,我如何处理事件 致以最诚挚的问候通常,如果用户关闭了一个对话框,我会销毁它并创建一个新的对话框 当用户关闭对话框时,您可以使用类似这样的方法捕获并清理对话框: myDialog.connect(myDialog, 'close', func

我有一个来自对话。一切都能正常工作,但在db中保存数据后,如何刷新输入中的值

是否有技巧刷新整个表单,或者当有人按“取消”按钮隐藏对话框时,我应该使用dialog.reset()?如果只能通过reset()方法完成,那么当按下escape和右上角的关闭十字时,我如何处理事件


致以最诚挚的问候通常,如果用户关闭了一个对话框,我会销毁它并创建一个新的对话框

当用户关闭对话框时,您可以使用类似这样的方法捕获并清理对话框:

myDialog.connect(myDialog, 'close', function(){myDialog.destroy();});
请注意,在对话框小部件上使用
connect()
方法意味着当小部件被销毁时,连接本身也将被清除

漂亮整洁:)

如果您只是想清除表单,可以在close connect中使用
document.myform.reset()

一个更完整的示例:

showDia: function(){
    myDia = new dijit.Dialog({
        title: "Public Reminder",
        content: "<center>My incredible dialog content that will change the world</center><br>"+
            "<form id='fooBarForm'>"+
            "<input type='hidden' name='fooName' id='fooId' value='fooValue'></input>"+
            "<select name='barName' style='margin: 3px;' id='barId'>"+
            "<option value='barOpt1'>test1</option>"+
            "<option value='barOpt2'>test2</option>"+ 
            "</select>"+
            "</form>",
        style: "width: 320px;"
    });
    myDia.connect(myDia, 'close', function(){myDia.destroy();});
    // OR you can call `reset()` on the fooBarForm instead of `myDia.destroy()`, and when 
    // you call `showDia()`, check if the dialog already exists and then just call `show()` on 
    // it
    myDia.show();
}
showDia:function(){
myDia=新建dijit.Dialog({
标题:“公众提醒”,
内容:“我难以置信的对话内容将改变世界
”+ ""+ ""+ ""+ “测试1”+ “测试2”+ ""+ "", 样式:“宽度:320px }); 连接(myDia,'close',function(){myDia.destroy();}); //或者可以在fooBarForm上调用'reset()',而不是'myDia.destroy()`,以及何时调用 //调用'showDia()`,检查对话框是否已经存在,然后只需在上调用'show()` //它 myDia.show(); }
现在,关于这一点的一点是,它引入了一个全局名称(myDia)。但是您可以很容易地将其作为对象的一个成员,但事实并非如此。showDia还应该是对象上的成员方法(即,不是全局函数)


此外,这通常是通过使用内容窗格从URL中提取内容来完成的。

如果通过程序将对话框创建为new dijit.dialog(),然后,当您设置url时,您必须将一个额外参数设置为随机数,这样对服务器的每个请求都将被视为新请求……这就是诀窍……事实上,我已经通过这种方式成功了。

great:)但当我销毁对话框时,我不能再次使用show()。当然它被破坏了,但是我怎么能再展示它呢?现在我只是静态地在div html中生成对话框:如果您确实想重复使用它,那么您可以如上所述连接到close事件,并在该点清除表单,或者连接到
show()
方法,然后执行该操作。如果你想重新显示它,并且你已经破坏了它,只需以同样的方式重新创建它:)嗯,我理解,但我不知道如何编写它,你能不能很好地给我一个提示或一个示例?添加了一个更完整的示例,你可以按照建议执行并连接到
show()
方法。当对话框打开时,您执行ajax调用以从服务器获取最新数据,然后使用返回的数据设置表单字段。用户保存后,是否要清除输入?最好在随机数上使用时间戳。。。比如newdate().getTime();