我用Maqetta创建了一个布局。现在我想将逻辑添加到布局中。因此,我从Maqetta下载了整个工作区,并将文件/libaries导入到一个新的Rails项目中。起初,我遇到了一些问题,Rails没有加载dojo,js文件,但我已经解决了这个问题。
现在我又遇到了另一个问题。页面不会呈现。除了一个小部件(一个按钮)之外,我已经将所有内容都注释掉了,这很好。但如果我撤销这个,什么都不会发生。不幸的是,我也没有从dojo得到任何警告/错误或类似的东西。
尝试了一会儿之后,我更改了parseOnLoad属性,现在我收到了警告:
未处理错误:尝试向id==appLayout注册小部件,但该id已经注册
下面是包含标记:
<%= javascript_include_tag "lib/dojo/dojo/dojo", :'data-dojo-config' => "'async':true,
'packages':[{'name':'maqetta','location':'../../maqetta'},{'name':'gridx','location':'../gridx'},{'name':'clipart','location':'../../clipart'},{'name':'shapes','location':'../../shapes'},
{'name':'maqettaSamples','location':'../../../samples'},{'name':'zazl','location':'../../zazl'},{'name':'widgets','location':'../../custom'}]" %>下面是HTML部分(我已经简化了它,现在我只是使用本教程中的示例):
<body class="claro" data-maq-flow-layout="true" data-maq-ws="collapse" id="myapp" data-maq-appstates="{}">
<input type="button" data-dojo-type="dijit.form.Button" intermediateChanges="false" label="Search" iconClass="dijitNoIcon" onclick="alert('hi');"></input>
<div
id="appLayout" class="demoLayout"
data-dojo-type="dijit/layout/BorderContainer"
data-dojo-props="design: 'headline'">
<div
class="centerPanel"
data-dojo-type="dijit/layout/ContentPane"
data-dojo-props="region: 'center'">
<div>
<h4>Group 1 Content</h4>
<p>Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.</p>
</div>
<div>
<h4>Group 2 Content</h4>
</div>
<div>
<h4>Group 3 Content</h4>
</div>
</div>
<div
class="edgePanel"
data-dojo-type="dijit/layout/ContentPane"
data-dojo-props="region: 'top'">Header content (top)</div>
<div
id="leftCol" class="edgePanel"
data-dojo-type="dijit/layout/ContentPane"
data-dojo-props="region: 'left', splitter: true">Sidebar content (left)</div>
</div>下面是解析器:
require(["dojo/parser","dojo/domReady!"], function(parser){
parser.parse();
});我已经试了好几个小时了,我还是像刚开始的时候一样无所适从。有人知道我能尝试什么吗?
发布于 2012-11-01 14:58:44
未处理错误:尝试向id==appLayout注册小部件,但该id已经注册
此错误是因为您正在分析两次。一次加载,第二次在require语句中。第二个解析将尝试使用相同的id注册第二个小部件,从而导致错误。
删除一个解析调用,并给边框容器一个特定的宽度和高度。
<div id="appLayout" class="demoLayout"
data-dojo-type="dijit/layout/BorderContainer"
data-dojo-props="design: 'headline'"
style="width: 800px; height: 400px">发布于 2012-11-01 17:40:43
参见http://livedocs.dojotoolkit.org/dijit/layout/BorderContainer#setting-sizes,hasLayout为真的最近的父级(例如,位置:相对)必须有一个width+height集。另外,将width+height设置为BorderContainer。
https://stackoverflow.com/questions/13179556
复制相似问题