dojo 1.10.4 dijit/layout/Tabcontainer 不呈现第一个内容窗格的内容
dojo 1.10.4 dijit/layout/Tabcontainer not rendering first contentpane's content
道场 1.10.4,站点网 2.4.2
我正在尝试在我的项目中使用 dojo 1.10.4 来使用 sitemesh 2.4.2,spring 框架 4.1。
当我尝试将 tabcontainer 放入我的内容部分(由 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>
结果为:
其他选项卡内容窗格显示正确。
Eidt
这是一个非常有趣的问题,它是由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
),你不需要做额外的解析。
道场 1.10.4,站点网 2.4.2
我正在尝试在我的项目中使用 dojo 1.10.4 来使用 sitemesh 2.4.2,spring 框架 4.1。
当我尝试将 tabcontainer 放入我的内容部分(由 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>
结果为:
其他选项卡内容窗格显示正确。
Eidt
这是一个非常有趣的问题,它是由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
),你不需要做额外的解析。