2016-05-24 5 views
0

ich den Link myDiv1 nur einmal (ein Klick) ausgenommen öffnen wollen, wenn seine Nähe:DOJO: helfen Sie mir mit Tab

1) Wenn ich auf myDiv1 klicken -> eine neue Registerkarte öffnen ("Dashboard-1 ") -> Es funktioniert

2) Wenn ich auf onClose klicken von myDiv1 -> Tab schließen (" Dashboard-1 ") -> Es

3) Wenn die neuen Registerkarte (funktioniert" Dashboard-1 ") ist geöffnet und ich klicke erneut auf myDiv1 Ich möchte nur die Registerkarte auswählen und keine neue erstellen.

Wie kann ich den dritten Schritt tun ???

Kiss from Paris

<script> 
require(["dojo/dom-attr", "dojo/query", "dijit/layout/TabContainer",  "dijit/layout/ContentPane", "dojo/on", "dojo/dom", "dojo/dom-style", "dojo/mouse", "dojo/dom-construct"], 

function(attr, query, TabContainer, ContentPane, on, dom, domStyle, mouse, domConstruct) 
{ 
    on(myDiv1, "click", function(evt) 
    { 
     var cp1 = new ContentPane(
     { 
      title: myDiv1.innerText, 
      closable: true, 
      onClose: function() 
      { 
       tc.removeChild(cp1); 
      }, 
      content: domConstruct.create("iframe", 
      { 
       "src": "http://www.bing.com/" 
      }) 
     }); 
     tc.addChild(cp1, 0); 
     tc.selectChild(cp1); 
    }); 

    var tc = new TabContainer(
    { 
     style: "height: 100%; width: 100%;" 
    }, "tab-window"); 
    tc.startup(); 

}); 
</script> 

</head> 
<body class="claro"> 
    <div style="float:left; width:10%; height:100%"> 
     <div id="myDiv1" data-dojo-type="dijit/MenuItem" style="padding:5px; color:blue; font-size:125%;">Dashboard 1</div> 
    </div> 

<div id="idonglet" style="float:left; width:90%; height:500px"> 
    <div id="tab-window"> 
     <!--<iframe id="myIframe" style="float:left; width:100%; height:100%"></iframe>--> 
     <div id="output"></div> 
    </div> 
</div> 
</body> 
</html> 

Antwort

0

Holen Sie sich die Kinder der TabContainer und über sie iterieren und prüfen Sie, ob der Titel einer von ihnen gleich myDiv1.innerText ist. Wenn dies der Fall ist, wählen Sie dieses Kind aus.

Ich poste hier, die Änderungen, die in Ihrem Code erforderlich sind.

require(["dojo/dom-attr", "dojo/query", "dijit/layout/TabContainer",  "dijit/layout/ContentPane", "dojo/on", "dojo/dom", "dojo/dom-style", "dojo/mouse", "dojo/dom-construct", "dijit/registry"], 

function(attr, query, TabContainer, ContentPane, on, dom, domStyle, mouse, domConstruct, registry) 
{ 
    on(myDiv1, "click", function(evt) 
    { 
     var found= false; 
     var children= tc.getChildren(); 
     for(var i=0; i<children.length; i+++){ 
      var child= children[i]; 
      if(child.title== myDiv1.innerText){ 
        tc.selectChild(child); 
        found= true; 
        break; 
      } 
     } 
     if(!found){ 
      var cp1 = new ContentPane({ 
       title: myDiv1.innerText, 
       closable: true, 
       onClose: function() 
       { 
        tc.removeChild(cp1); 
       }, 
       content: domConstruct.create("iframe", 
       { 
        "src": "http://www.bing.com/" 
       }) 
      }); 
      tc.addChild(cp1, 0); 
      tc.selectChild(cp1); 
     } 
    }); 

    var tc = new TabContainer(
    { 
     style: "height: 100%; width: 100%;" 
    }, "tab-window"); 
    tc.startup(); 

}); 
+0

Wahou! Perfekte Antwort!!! Vielen Dank! –

+0

Ich bin froh, dass ich helfen konnte. :) Bitte markieren Sie es als akzeptierte Antwort, wenn es für Sie arbeitete. – Himanshu