मैंने Ext.tree.TreePanel बनाने में कामयाब रहा है जो बाल नोड्स को गतिशील रूप से लोड करता है, लेकिन मुझे पेड़ को साफ़ करने और इसे नए डेटा के साथ लोड करने में मुश्किल हो रही है। क्या कोई ऐसा करने के लिए कोड के साथ मेरी मदद कर सकता है?आप एक्स्टजेस में एक पेड़ कैसे साफ़ करते हैं?
उत्तर
मुझे अंत में उनके मंचों में एक जवाब मिला। रुचि किसी के लिए भी इसे यहाँ है:
if (tree)
{
var delNode;
while (delNode = tree.root.childNodes[0])
tree.root.removeChild(delNode);
}
if (tree) { var delNode; while (delNode = tree.root.childNodes[0]) tree.root.removeChild(delNode); }
मैं Ext पता नहीं है, लेकिन मेरा अनुमान है कि वे डोम अमूर्त कि आसान बना सकता है कि है। प्रोटोटाइप में एक बराबर कुछ की तरह होगा:
tree.root.immediateDescendants().invoke('remove'); // or
tree.root.select('> *').invoke('remove');
tree.root
जब तक बल्कि पेड़ की जड़ डोम नोड की तुलना में एक संग्रह वस्तु को संदर्भित करता है, लेकिन डोम एपीआई विधि के नाम उधार है? यह वास्तव में एक आधुनिक जेएस पुस्तकालय के लिए, वास्तव में असंभव लगता है।
मेरे मामले में, मेरे एक्स पेड़ में AsyncTreeNode प्रकार का एक छुपा रूट नोड है। मैं पेड़ साफ़ करना चाहते हैं और सर्वर से फिर से आबाद हैं, तो यह बहुत सरल है:
tree.getRootNode().reload();
साकी की अद्भुत ब्लॉग एक ExtJS गुरु से।
while (node.firstChild) {
node.removeChild(node.firstChild);
}
http://blog.extjs.eu/know-how/how-to-remove-all-children-of-a-tree-node/
मैं एक ऐसी ही समस्या का सामना किया और समाधान मैं के साथ आया था, जब यह फिर से विस्तार किया गया था 'टैग' करने के लिए नोड लोड नहीं होने की है जब यह इस प्रकार समाप्त हो गया है एक बार पुनः लोड करने के लिए मजबूर कर रहा था ।
listeners: {
collapsenode: function(node){
node.loaded = false;
},
में Ext जे एस 4:
अगर आप पेड़ पैनल के डेटा को फिर से लोड करना चाहते हैं, तो आप पेड़ की दुकान फिर से लोड करने की आवश्यकता है:
getCmp('treeId').getStore().load();
जहां treeId की आईडी है पेड़। यदि आपके पास स्टोर आईडी है, तो आप सीधे स्टोर आईडी पर लोड() का उपयोग कर सकते हैं।
सभी बच्चे नोड्स को हटाने के लिए:
getCmp('treeId').getRootNode().removeAll();
हालांकि, बच्चे नोड्स को हटाने के अपने दुकान से पेड़ नोड्स पुन: लोड के लिए आवश्यक नहीं है।
आप इस नोड से सभी बच्चे नोड्स को निकालने के लिए बस node.removeAll()
का उपयोग कर सकते हैं।
http://docs.sencha.com/extjs/4.2.1/#!/api/Ext.data.NodeInterface-method-removeAll