タブコンテナビューからタイトルペインビューに切り替えようとしています。私は "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>
コンテンツペインをタブまたはタイトルに動的に切り替えようとしています。私はこれを宣言的に設定したいと考えていました。私はそれらを破壊するまで別のウィジェットにdivを設定することはできません。宣言文を削除するようです。これをプログラムで行う必要があるようです。私はそれが機能するかどうかを見るためにplace関数を見ます。ありがとう。 –
タイトルパネルを最初から直接使用しないのはなぜですか? また、TitlePanesがTabContainerの最初の子になる可能性はないので、最初のContentPaneを保持する必要があるかもしれません。 最後に、titlePane.containerNodeの中にContentPane.containerNodeのコンテンツを移動してみませんか? (dndのように) – PEM
私はそれがほしいと思うと思うよ - http://jsfiddle.net/afarris/B2Yyv/ キーはdojo.parser.parseを実行する前にすべてを設定することでした。このようにして、パーサーが実行されるときに私が必要とする場所にすべてのノードと場所をクローンすることができます。 –