0

Maqettaでレイアウトを作成しました。次に、レイアウトにロジックを追加します。そのため、Maqettaからワークスペース全体をダウンロードし、ファイル/ライブラリを新しいRailsプロジェクトにインポートしました。最初は、Railsがdojo、jsファイルをロードしないという問題がありましたが、その問題は解決しました。
今、私は別の問題を抱えています。ページはレンダリングされません。1つのウィジェット(ボタン)を除いてすべてコメントアウトしましたが、これは正常に機能します。しかし、これを元に戻すと、何も起こりません。残念ながら、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 は既に登録されています

このエラーは、2 回解析しているためです。ロード時に 1 回、require ステートメントで 2 回目。2 番目の解析では、同じ ID を持つ 2 番目のウィジェットを登録しようとするため、エラーが発生します。

解析呼び出しの 1 つを削除し、ボーダー コンテナーに特定の幅と高さを与えます。

<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を参照してください。trueである最も近い親hasLayout(例: position:relative) には幅と高さが設定されている必要があります。また、BorderContainer の width+height を設定します。

于 2012-11-01T17:40:43.937 に答える