javascript - ऊपर() और नीचे() बनाम Ext.getCmp()




extjs extjs4 (2)

मैं बहुत उलझन में हूं जिसे मुझे grep ऑब्जेक्ट के लिए () नीचे () और Ext.getCmp (ID) के बीच उपयोग करने की आवश्यकता है।

मेरे लिए, यह आसान है कि ऑब्जेक्ट को ऑब्जेक्ट करने के लिए आईडी को परिभाषित करें और Ext.getCmp ('ID') द्वारा ऑब्जेक्ट पुनर्प्राप्त करें और कोड अधिक साफ दिखता है।

उदाहरण के लिए:

console.log(this.up('panel').up('panel').down('grid'));
console.log(Ext.getCmp('myPanel'));

प्रदर्शन के लिए कौन सा बेहतर है?


आईडी का उपयोग करने और अपने घटकों को खोजने के लिए getCmp के साथ गंभीर गठिया हैं। प्राथमिक मुद्दा यह है कि आप घटक को सुरक्षित रूप से पुन: उपयोग नहीं कर सकते हैं क्योंकि ज्यादातर मामलों में मार्कअप HTML तत्वों को डुप्लिकेट आईडी के साथ बनाएगा, जो अवैध HTML है। इसके अतिरिक्त, जब आपके पास एक ही आईडी के साथ दो घटक होते हैं तो आप अप्रत्याशित व्यवहार में भाग लेंगे जो ट्रैक करना मुश्किल है क्योंकि ढांचे को आपके घटकों का सही संदर्भ नहीं मिलेगा।

इस पर कई ब्लॉग और फोरम पोस्ट हैं, साथ ही साथ जे। गार्सिया द्वारा एक वीडियो इस विषय को कवर करता है। GetCmp का उपयोग करने का सुझाया गया तरीका उत्पादन-तैयार कोड के लिए केवल अन्य विधियों (ऊपर, नीचे, refs, itemId , और ComponentQuery ) पर स्विच करने के लिए डिबगिंग के लिए है।


Ext.getCmp() आंतरिक रूप से हैश मानचित्र का उपयोग करता है, इसलिए यह तेजी से प्रकाश Ext.getCmp() रहा है, लगभग एक कुंजी के आधार पर किसी सरणी में मान को पुनर्प्राप्त करने के रूप में तेज़ी से।

.up() और down() घटक पदानुक्रम के एक ट्रैवर्सल का उपयोग करके कार्यान्वित किया जाता है, जो धीमी प्रक्रिया है।

लेकिन up() और down() चयनकर्ताओं का उपयोग करते हैं, इसलिए वे कक्षाओं का चयन भी कर सकते हैं, सिर्फ आईडी नहीं।

आपको बस याद रखना होगा कि विभिन्न स्थितियां हैं जहां आप up() या down() का उपयोग करना चाहेंगे, जैसे नियंत्रणों के लिए एक आम हैंडलर होता है, या जब आप जिस घटक के बाद होते हैं वह ढांचे द्वारा स्वतः उत्पन्न होता है तो आप इसे स्वयं आईडी नहीं दे सकते।







extjs4.1