如何在dojo中刷新对话框

时间:2012-01-16 10:33:46

标签: javascript dojo

我有一个来自对话框。一切都有效,但如何在db中保存数据后刷新输入中的值?

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

祝你好运

2 个答案:

答案 0 :(得分:4)

通常,如果用户关闭了一个对话框,我只需销毁该对象并创建一个新对象。

当用户关闭对话框并清理它时,您可以使用类似的内容进行捕获:

myDialog.connect(myDialog, 'close', function(){myDialog.destroy();});

请注意,在对话框小部件上使用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();
}

现在,关于这一点的一件事就是引入全局名称(myDia)。但是你很容易使它成为一个对象的成员而事实并非如此。 showDia也应该是对象的成员方法(即,不是全局函数)。

此外,通常使用内容窗格从URL中提取内容。

答案 1 :(得分:1)

如果你通过你的程序创建对话框作为新的dijit.Dialog(),那么当你设置url时,你必须设置一个额外的参数作为随机数,因此每个服务器的请求将被视为新的请求.... ......这就是诀窍......实际上我已经成功了。