dojo可以在没有iFrames的dijit.Dialog中浏览页面吗?

时间:2015-02-03 15:28:24

标签: javascript dojo stripes

我正在使用java Stripes框架和dojo开发应用程序。客户希望编辑详细信息表单显示在弹出窗口(灯箱)中。表格有两页。第一页是用户可以编辑详细信息的表单。第二页是一个确认页面,显示旧值与新值,因此他们有机会确认更改。

我出现了对话框,看起来很棒 我遇到的问题是当我点击“继续”时,对话框关闭,结果显示在主窗口而不是对话框内。

我需要在对话框中呈现结果。

这是我到目前为止的代码:

<div data-dojo-id="editDetails" data-dojo-type="dijit/Dialog" title="Edit Position Details" data-dojo-props="draggable:false, closable:false" href="urlToForm"></div>
<button class="buttons" title="Edit Details" tabindex="53" onclick="editDetails.show();" >Edit Details</button>

然后,这是对话框中显示的表单页面:

<stripes:form action="/action/editConfirmation">
<!--form fields here -->
<stripes:submit name="" class="buttons" title="Continue" tabindex="13">Continue</stripes:submit>
</stripes:form>

当用户单击表单上的提交按钮时,需要在editDetails dijit.Dialog div中显示操作解析。

我已经能够使用iframe。我想避免使用iframe,因为他们不会正确调整内容的对话框。

如果在iframe中的内容发生变化时有办法调整对话框大小,那么我会允许使用iframe。

1 个答案:

答案 0 :(得分:1)

可以使用dijit/Dialog属性在href中加载多个页面。

例如,假设您有一个包含表单的页面,例如:

This is the first page with content
<button data-dojo-type="dijit/form/Button" id="myBtn2">Click me</button>

然后你可以在你的代码中做这样的事情:

var dialog = new Dialog({
  href: 'page1.html'
});
dialog.show();

这将打开第一页的对话框。要通过单击第1页上的按钮切换页面,可以在load事件结束后创建事件处理程序:

dialog.on("load", function() {
  registry.byId("myBtn2").on("click", function() {
    dialog.set('href', 'page2.html');
  });  
});

一旦点击按钮,这会将对话框的href属性设置为第二页。

可在此处找到此示例:http://plnkr.co/edit/jxDnjoffC6s2KaXm1AAq?p=preview

相关问题