Zend 框架中的 Dojo 对话框错误
Posted
技术标签:
【中文标题】Zend 框架中的 Dojo 对话框错误【英文标题】:Dojo Dialog error in Zend Framework 【发布时间】:2012-11-01 17:31:08 【问题描述】:我正在尝试在 Zend Framework 中创建一个 Dojo 对话框,但遇到了一些问题。我的视图代码如下所示:
<script type="text/javascript" src="<?= $this->baseUrl('/js/dojo-release-1.7.2/dojo/dojo.js')?>"
data-dojo-config="async: true" dojoConfig = "parseOnLoad: true">
</script>
<script>
require(["dijit/registry", "dojo/ready", "dojo/dom", "dijit/Dialog", "dijit/form/Form"],
function(registry, ready, dom, Dialog)
ready(function()
createDialog = function(titleText, contentText)
var node = dojo.byId("foobar");
var myDialog = new Dialog( title:"From Source Node" , node);
myDialog.show();
;
);
);
</script>
<body class="claro">
<div data-dojo-type="dijit/Dialog" id="foobar" title="Foo!" style="display: none">
<p>I am some content</p>
</div>
</body>
加载对话框的按钮代码如下:
<button name="btnDialog" id="dialogbtn" type="button" onclick='createDialog();'>Open</button>
第一次单击按钮时,对话框按预期打开,但是一旦关闭对话框并再次单击按钮,对话框就不会打开,并且我在控制台中收到以下错误。
尝试使用 id==foobar 注册小部件,但该 id 已注册。
我做错了什么?
谢谢
【问题讨论】:
【参考方案1】:想通了。我认为表单解析不正确,因为 dojo-config 不正确。更改了javascript代码如下:
<script type="text/javascript" src="<?= $this->baseUrl('/js/dojo-release-1.7.2/dojo/dojo.js')?>"
data-dojo-config="async: true, parseOnLoad:true">
</script>
<script>
require(["dijit/registry", "dijit/Dialog"], function (registry)
createDialog = function createDialog()
registry.byId("foobar").show();
);
</script>
和div如下:
<body class="claro">
<div class="dijitHidden">
<div data-dojo-type="dijit.Dialog" data-dojo-props="title:'Foo!'" id="foobar">
<p>I am some content</p>
</div>
</div>
</body>
现在对话框 dijit 已保存到注册表并按预期工作
【讨论】:
以上是关于Zend 框架中的 Dojo 对话框错误的主要内容,如果未能解决你的问题,请参考以下文章
如何在zend框架中为dojo动态树创建dojo数据onclick事件以实现程序化方法