2015-08-18 5 views
0

dojo 1.10.4, SiteMesh 2.4.2dojo 1.10.4 dijit/layout/TabContainer ne pas rendre d'abord le contenu de contentPane

Je suis en train d'utiliser dojo dans mon projet 1.10.4 de travailler avec SiteMesh 2.4.2, cadre de ressort 4.1.

Lorsque j'essaie de mettre un tabcontainer dans ma section de contenu (en-tête, contenu et style de pied de page définis par sitemesh). Je ne reçois jamais le contenu du premier contentpain de mon tabcontainer, il est toujours visible. Code d'essai:

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

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

Le résultat que:

dojo first contentpane's content lost in tabcontainer

autre écran à onglets contentPane correctement.

Eidt

Ce problème est très drôle, il a été causé par javascript; J'ai changé le javascript en:

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

Ensuite, cela fonctionne très bien.

Répondre

0

Ce problème apparaît lorsque vous avez déjà analysé TabContainer et que vous essayez de l'analyser à nouveau. Ce qui se passe, c'est que le nouveau widget ne peut pas être créé car il existe déjà, et donc votre premier onglet ne fonctionnera pas correctement.

Si vous ouvrez votre console de navigateur (généralement F12), vous verrez même l'erreur:

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

Pour résoudre ce problème, vous devriez essayer de chercher d'autres parser.parse() déclarations, ou peut-être que vous êtes analyser le DOM sur le chargement déjà (en utilisant parseOnLoad: true) si c'est le cas, vous n'avez pas besoin d'effectuer d'analyse supplémentaire.