繁体   English   中英

dojo 1.10.4 dijit / layout / Tabcontainer无法呈现第一个contentpane的内容

[英]dojo 1.10.4 dijit/layout/Tabcontainer not rendering first contentpane's content

dojo 1.10.4,sitemesh 2.4.2

我试图在我的项目中使用dojo 1.10.4来与sitemesh 2.4.2,spring框架4.1一起使用。

当我尝试在内容部分中放置一个tabcontainer时(由sitemesh定义的页眉,内容和页脚样式)。 我从来没有出现过tabcontainer的第一个contentpane的内容,但它总是消失了。 测试代码为:

<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>

结果为:

在tabcontainer中丢失了dojo第一个contentpane的内容

其他选项卡式内容窗格正确显示。

开斋节

这是一个非常有趣的问题,它是由javascript引起的; 我将javascript更改为:

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

然后,它工作正常。

当您已经解析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 ),则无需进行其他解析。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM