/ / अलग-अलग dijit कंटेनरों में डोम नोड्स को फिर से असाइन करें - html, dojo

विभिन्न dijit कंटेनर के लिए डोम नोड्स फिर से असाइन करें - एचटीएमएल, dojo

मैं एक टैब कंटेनर दृश्य से टॉगल करने की कोशिश कर रहा हूंशीर्षक दृश्य देखने के लिए। मैं "cPane" के वर्ग के साथ सभी डोम ऑब्जेक्ट्स में खींच रहा हूं। प्रारंभ में मैं dijit.layout.ContentPane के रूप में असाइन कर रहा हूं, जब मैं टॉगल बटन हिट करता हूं तो मैं dijit.TitlePane को पुनः असाइन करने का प्रयास कर रहा हूं।

ऐसा लगता है कि डोम तत्व इसे नहीं रख रहे हैंजिम्मेदार बताते हैं। मैंने हर "नष्ट" विधि की कोशिश की है, लेकिन जब मैं उन्हें टाइटलपेन को सौंपता हूं तो वे खाली होते हैं। मैं विशेषताओं को खोए बिना डोम नोड्स को फिर से कैसे असाइन कर सकता हूं? धन्यवाद।

मेरा कोड यहाँ है: http://jsfiddle.net/afarris/gFXnH/11/

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 № 1

जब आप .destroyDescendants को कॉल करते हैं, तो आप "टैब कंटेनर को नष्ट कर रहे हैं, जो कंटेंट पैन को नष्ट कर देता है, जो आपके मूल .cPane divs को नष्ट कर देता है। इसलिए वे" टाइटलपेन्स के रूप में डालने के लिए नहीं हैं।

जब आप अपने प्रारंभिक ContentPane का निर्माण करते हैं, तो आप "पुनः निर्माण आपका .cPane नोड्स में आपके ContentPanes (आपके ContentPanes के अंदर नहीं), इसलिए जब आप टैब कंटेनर को नष्ट करते हैं तो वे चले जाएंगे।

इसलिए, आपको अपनी सामग्री को नष्ट करने से पहले अपनी सामग्री को पैन से बाहर निकालने की आवश्यकता है। यदि आप अपनी सामग्री डालते हैं, तो यह संभवतः कम भ्रमित करने वाला होगा में आपकी सामग्री आपकी बारी के बजाय पैन करती हैसामग्री पैन में सामग्री। (और जब आप टाइटल प्लेन बनाते हैं।) तब आप कंटेंटपेन से टाइटलपेन (जैसे) में अपनी सामग्री को स्थानांतरित करने के लिए बस "जगह" का उपयोग कर सकते हैं। http://dojotoolkit.org/documentation/tutorials/1.7/dom_functions/)

मुझे यकीन नहीं है कि आप क्या हासिल करने की कोशिश कर रहे हैं, इसलिए यह जवाब देने के लिए थोड़ा मुश्किल है।