2012-05-04 18 views
0

タブコンテナビューからタイトルペインビューに切り替えようとしています。私は "cPane"のクラスですべてのDOMオブジェクトを取得しています。最初はdijit.layout.ContentPaneとして割り当てていますが、トグルボタンを押すとdijit.TitlePaneに再割り当てしようとしています。異なるdijitコンテナにdomノードを再割り当てする

dom要素がその属性を保持していないようです。私はすべての "破壊"メソッドを試しましたが、TitlePaneに割り当てると空白になります。属性を失うことなくDOMノードを再割り当てするにはどうすればよいですか?ありがとう。

は、ここに私のコードです:

dojo.require("dojo.parser"); 
dojo.require("dijit.form.Button"); 
dojo.require("dijit.layout.TabContainer"); 
dojo.require("dijit.layout.ContentPane"); 
dojo.require("dijit.TitlePane"); 

dojo.addOnLoad(function() { 

dojo.parser.parse("widget"); 

var cc = dojo.byId("contentContainer"); 

dojo.query(".cPane").forEach(function(n){ 
    new dijit.layout.ContentPane({ 
     title: dojo.attr(n, "title") 
    }, n); 
}); 

var dtc = new dijit.layout.TabContainer({ 
    style: "height:100px; width: 100%;" 
}, cc); 

dtc.startup();  

var tabMode = true; 


new dijit.form.ToggleButton({ 
    showLabel: true, 
    checked: false, 
    onChange: function(val) { 
     if (tabMode == true) { 
      dtc.destroyDescendants(true); 
      dojo.query(".cPane").forEach(function(n){ 
      console.log('found contentPane'); 
       new dijit.TitlePane({ 
        title: dojo.attr(n, "title"), open: "true" 
       }, n), cc; 
      });    
     } 

    }, 
    label: "toggle" 
}, 
"viewToggle");  

}); 

<div class="tundra"> 
<div id="widget"> 
<button id="viewToggle"></button> 
<div id="contentContainer"> 
    <div class="cPane" title="First" style="width: 100%; height: 100px">test</div> 
    <div class="cPane" title="Second" style="width: 100%; height: 100px"><p>demo</p></div> 
</div> 
</div> 

答えて

0

あなたが.destroyDescendantsを呼び出すhttp://jsfiddle.net/afarris/gFXnH/11/、あなたの元.cPaneのdivを破壊するコンテンツペインを破壊タブコンテナを、破壊しています。だから彼らはTitlePanesとして入れることはできません。

あなたの初期のcontentPaneを作成するとき、あなたはにあなたのContentPanes(ないあなたのContentPanes内側)あなた.cPaneノードを作っているので、あなたは、タブコンテナを破壊したとき、彼らは離れて行きますよ。

コンテンツを破棄する前にコンテンツペインからコンテンツを取得する必要があります。コンテンツをコンテンツペインに変えるのではなく、をコンテンツペインのに入れると、これはおそらくあまり混乱しないでしょう。 ContentPaneからTitlePaneにコンテンツを移動するのに「場所」を使用することができます(例:http://dojotoolkit.org/documentation/tutorials/1.7/dom_functions/

私はあなたが達成しようとしていることはよく分かりません。答えるのはちょっと難しいです。

+0

コンテンツペインをタブまたはタイトルに動的に切り替えようとしています。私はこれを宣言的に設定したいと考えていました。私はそれらを破壊するまで別のウィジェットにdivを設定することはできません。宣言文を削除するようです。これをプログラムで行う必要があるようです。私はそれが機能するかどうかを見るためにplace関数を見ます。ありがとう。 –

+0

タイトルパネルを最初から直接使用しないのはなぜですか? また、TitlePanesがTabContainerの最初の子になる可能性はないので、最初のContentPaneを保持する必要があるかもしれません。 最後に、titlePane.containerNodeの中にContentPane.containerNodeのコンテンツを移動してみませんか? (dndのように) – PEM

+0

私はそれがほしいと思うと思うよ - http://jsfiddle.net/afarris/B2Yyv/ キーはdojo.parser.parseを実行する前にすべてを設定することでした。このようにして、パーサーが実行されるときに私が必要とする場所にすべてのノードと場所をクローンすることができます。 –

関連する問題