2015-08-18 3 views
0

додзё 1.10.4, SiteMesh 2.4.2додзё содержание 1.10.4 Dijit/макет/TabContainer не оказания первой ContentPane в

Я пытаюсь использовать додзё 1.10.4 в моем проекте, чтобы работать с SiteMesh 2.4.2, весенний каркас 4.1.

Когда я пытаюсь поместить tabcontainer в свой раздел контента (заголовок, стиль содержимого и нижнего колонтитула, определяемый sitemesh). Я никогда не получаю содержимое первой контентной панели моего таблоконтейнера, оно всегда исчезает. тестовый код, как:

<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's content lost in tabcontainer

другой закладками ContentPane дисплей должным образом.

Eidt

Это очень забавный вопрос, это было вызвано JavaScript; Я изменил javascript на:

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

Тогда он отлично работает.

ответ

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), если это так, вам не нужно выполнять дополнительный синтаксический разбор.