dojo 1.10.4 dijit/layout/Tabcontainer не отображает содержимое первой области содержимого
dojo 1.10.4, sitemesh 2.4.2
Я пытаюсь использовать dojo 1.10.4 в моем проекте для работы с sitemesh 2.4.2, Spring Framework 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>
Тогда все работает нормально.
1 ответ
Эта проблема появляется, когда вы уже проанализировали 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
) если это так, вам не нужно делать дополнительный анализ.