我正在使用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。

最佳答案

通过使用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

关于javascript - dojo可以在没有iFrame的情况下浏览dijit.Dialog中的页面吗?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/28302617/

10-10 16:31