0

我用 Maqetta 创建了一个布局。现在我想将逻辑添加到布局中。因此,我从 Maqetta 下载了整个工作区并将文件/库导入到一个新的 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();
});

我现在尝试了几个小时,但我仍然像一开始一样一无所知。有人知道我可以尝试什么吗?

4

2 回答 2

2

未处理的错误:尝试使用 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-01T14:58:44.633 回答
1

请参阅http://livedocs.dojotoolkit.org/dijit/layout/BorderContainer#setting-sizes,最近的父级为hasLayout真(例如位置:相对)必须设置宽度+高度。此外,为 BorderContainer 设置宽度+高度。

于 2012-11-01T17:40:43.937 回答