我有一个网格。在每一行中都有一个图标,用于打开一个 dijit/对话框
第一.jsp中的链接方法:
var createDownloadLink = function(updateDescriptorId) {
var link = put('a[href=#]', _textIcon.getIconNode("download", "action.std.download"));
on(link, 'click', function() {
xhr('javaMethod/' + updateDescriptorId, {
handleAs : "html"
}).then(function(data) {
dialog = new Dialog({
content : data
});
dialog.show();
});
});
return link;
};
"javaMethod"是控制器中的方法,它返回一个模型视图(Spring)。
应该绘制的页面被绘制,但只有html部分,问题是在这个页面中有一些javascript(dojo)脚本,但它没有被绘制。
绘制的jsp(但没有javascript部分)
<script type="text/javascript">
require([ "js/MyJs",
"dojo/_base/declare",
"dojo/ready" ],
function(MyJs, declare, ready) {
ready(function() {
var _view = new MyJs({
'downloadButton' : 'downloadButton',
'backButton' : 'backButton'
});
});
});
</script>
<div id="" class="floatbox">
<div class="h1">
<spring:message code="text.error.headline" />
</div>
<div class="description">
<spring:message code="text.error.description" />
</div>
<div class="row">
<div class="col">
<div id="downloadButton"></div>
</div>
<div class="col">
<div id="backButton"></div>
</div>
</div>
</div>
"downloadButton"和"backButton"没有被绘制,因为它们是在js/MyJs中定义的
这是正确的行为,因为"出于安全考虑,当使用 AJAX 请求(如 dojo/request/xhr)时,JavaScript 永远不会自动执行。
我在某些线程中读到,它必须使用dojox.layout.ContentPane。我试过了,但没有成功。
问题
我应该在哪里放置dojox.layout.ContentPane或我必须在代码中修改的内容,以获得与javascript功能一起显示的模态窗口(dijit/Dialog)?
> 似乎dojox/widget/DialogSimple
对您有用,因为它具有executeScripts
可选标志。
编辑
不使用dojo/request/xhr
,而是使用 dojox/widget/DialogSimple
的 href
属性:
var createDownloadLink = function(updateDescriptorId) {
var link = put('a[href=#]', _textIcon.getIconNode("download", "action.std.download"));
on(link, 'click', function() {
dlg = new DialogSimple({
title: "My Title",
executeScripts: true,
href: 'javaMethod/' + updateDescriptorId,
});
dlg.startup();
dlg.show();
});
return link;
};
我认为您可以放置整个对话框代码,即
<div dojoType="dojox.layout.ContentPane">
<div id="" class="floatbox">
<div class="h1">
<spring:message code="text.error.headline" />
</div>
<div class="description">
<spring:message code="text.error.description" />
</div>
<div class="row">
<div class="col">
<div id="downloadButton"></div>
</div>
<div class="col">
<div id="backButton"></div>
</div>
</div>
</div>
</div>