dojo 可以在没有 iFrame 的情况下在 dijit.Dialog 中浏览页面吗?
Can dojo navigate through pages in a dijit.Dialog without iFrames?
我正在使用 java Stripes 框架和 dojo 开发应用程序。客户希望编辑详细信息表单显示在弹出类型 window(灯箱)中。表格有两页。第一页是用户可以编辑详细信息的表单。第二页是确认页面,显示旧值与新值,因此他们有机会确认他们的更改。
我显示了对话框,它看起来很棒。
我遇到的问题是,当我单击 "continue" 时,对话框关闭,结果显示在主 window 而不是对话框中。
我需要在对话框中呈现结果。
这是我目前的代码:
<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
我正在使用 java Stripes 框架和 dojo 开发应用程序。客户希望编辑详细信息表单显示在弹出类型 window(灯箱)中。表格有两页。第一页是用户可以编辑详细信息的表单。第二页是确认页面,显示旧值与新值,因此他们有机会确认他们的更改。
我显示了对话框,它看起来很棒。
我遇到的问题是,当我单击 "continue" 时,对话框关闭,结果显示在主 window 而不是对话框中。
我需要在对话框中呈现结果。
这是我目前的代码:
<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