我有一个网格。在每一行中都有一个图标,打开一个dijit / Dialog
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”是Controller中的一个方法,它返回一个ModelView(Spring)。
应该绘制的页面是绘制的,但只有html部分,问题是在这个页面中有一些javascript(dojo)脚本,但它没有绘制。
<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永远不会被自动执行。”像Dimitri M说here
我在一些帖子中读过,必须使用 dojox.layout.ContentPane 。我尝试过,但没有成功。
我应该把 dojox.layout.ContentPane 或者我在代码中修改的内容放到哪里,以获得用javascript功能显示的模态窗口(dijit / Dialog)?
答案 0 :(得分:0)
似乎dojox/widget/DialogSimple
对您有用,因为它有executeScripts
可选标记。
修改强>
不使用dojo/request/xhr
,而是使用href
的{{1}}属性:
dojox/widget/DialogSimple
答案 1 :(得分:0)
我认为你可以把整个对话框代码,即
<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>