0

道場 1.10.4、サイトメッシュ 2.4.2

プロジェクトで dojo 1.10.4 を使用して、sitemesh 2.4.2、Spring Framework 4.1 を操作しようとしています。

コンテンツ セクション (sitemesh で定義されたヘッダー、コンテンツ、フッター スタイル) に tabcontainer を配置しようとしたとき。タブコンテナの最初のコンテンツペインのコンテンツが表示されることはありません。常に消えます。次のようにコードをテストします。

<div style="width: 350px; height: 300px">
  <div data-dojo-type="dijit/layout/TabContainer" style="width: 100%; height: 100%;">
    <div data-dojo-type="dijit/layout/ContentPane" title="My first tab" data-dojo-props="selected:true">
      Lorem ipsum and all around...
    </div>
    <div data-dojo-type="dijit/layout/ContentPane" title="My second tab">
      Lorem ipsum and all around - second...
    </div>
    <div data-dojo-type="dijit/layout/ContentPane" title="My last tab" data-dojo-props="closable:true">
      Lorem ipsum and all around - last...
    </div>
  </div>
</div>

JavaScriptとして:

<script type="text/javascript">
  require(["dojo/parser", "dojo/aspect", "dijit/layout/TabContainer", "dijit/layout/ContentPane","dojo/domReady!"], function(parser, aspect) {
    parser.parse();
  });
</script>

結果は次のとおりです。

dojo first contentpane のコンテンツが tabcontainer で失われる

他のタブ付きコンテンツ ペインが正しく表示されます。

エイト

これは非常に面白い問題です。JavaScript が原因でした。JavaScript を次のように変更しました。

<script type="text/javascript">
  require(["dojo/parser", "dijit/layout/TabContainer", "dijit/layout/ContentPane"]);
</script>

その後、正常に動作します。

4

1 に答える 1

0

この問題は、 を既に解析してTabContainerおり、再度解析しようとしている場合に発生します。何が起こるかというと、新しいウィジェットは既に存在するため作成できず、最初のタブが正しく機能しません。

ブラウザ コンソール (通常はF12) を開くと、次のエラーも表示されます。

dojo/parser::parse() error Error: Tried to register widget with id==dijit_layout_ContentPane_0 but that id is already registered

これを修正するには、他のステートメントを探す必要がありparser.parse()ます。または、ロード時に DOM を既に解析している可能性があります ( を使用parseOnLoad: true)。その場合は、追加の解析を行う必要はありません。

于 2015-08-18T08:11:12.020 に答える