2010-01-22 8 views
6

के बजाय मैं एक सवाल प्रदर्शन, विश्वसनीयता के विषय में, और ExtJS के अद्यतन() विधि का उपयोग कर, की तुलना में सीधे एक Ext तत्व के डोम के innerHTML को अद्यतन करने का सबसे अच्छा अभ्यास विधि है।प्रश्न Ext के अद्यतन (का प्रयोग करके) dom.innerHTML

पर विचार दो कथन:

Ext.fly('element-id').dom.innerHTML = 'Welcome, Dude!'; 

और

Ext.fly('element.id').update('Welcome, Dude!', false); 

मैं eval() के लिए किसी भी स्क्रिप्ट की जरूरत नहीं है, और मुझे विश्वास है कि update() किसी भी ब्राउज़र quirks को ध्यान में लेता हूँ।


इसके अलावा, किसी को भी करता है, तो का उपयोग कर पता है:

Ext.fly('element-id').dom.innerHTML 

d.getElementById('element-id').innerHTML 

रूप में ही है?
ब्राउज़र और मंच संगतता महत्वपूर्ण हैं, और दो मौलिक हैं अगर एक ही है, तो update() के लिए Ext.element.dom.innerHTML खुदाई पूरी तरह शायद मेरी सबसे अच्छा समाधान होगा।

आपकी मदद के लिए अग्रिम धन्यवाद,

ब्रायन

उत्तर

4

आप स्क्रिप्ट अपने अपडेट किए गए html में गतिशील रूप से लोड या, फिर दो तरीके हैं आप रेखांकित किया है अद्यतन के बाद एक कॉलबैक कार्रवाई करने के लिए की जरूरत नहीं है बराबर। update() में कोड का बड़ा हिस्सा स्क्रिप्ट लोडिंग और कॉलबैक क्षमताओं को जोड़ता है। आंतरिक रूप से, यह सामग्री प्रतिस्थापन करने के लिए बस आंतरिक HTML सेट करता है।

Ext.fly().dom रिटर्न एक सादे डोम नोड है, तो हाँ, यह नोड यह की ओर इशारा करने के मामले में getElementById() का परिणाम के बराबर है। समझने के लिए एकमात्र सूक्ष्मता Ext.fly() और Ext.get() के बीच का अंतर है। Ext.fly() नोड रैपर ऑब्जेक्ट (एक फ्लाईवेट) का एक साझा उदाहरण देता है। इस प्रकार, उस उदाहरण के बाद दृश्यों के पीछे एक अलग नोड को इंगित किया जा सकता है यदि कोई अन्य कोड आंतरिक एक्स्ट कोड सहित Ext.fly() को कॉल करता है। इस प्रकार, Ext.fly() को कॉल का परिणाम केवल परमाणु संचालन के लिए उपयोग किया जाना चाहिए और लंबे समय तक जीवित वस्तु के रूप में उपयोग नहीं किया जाना चाहिए। दूसरी ओर Ext.get().dom एक नया, अद्वितीय ऑब्जेक्ट उदाहरण देता है, और उस अर्थ में, getElementById() की तरह अधिक होगा।

+0

तो, इसे मूल रूप से रखने के लिए, जब तक कि मैं कॉलबैक को संसाधित नहीं करना चाहता हूं या कुछ स्क्रिप्ट तैयार नहीं कर रहा हूं, तो 'अपडेट() 'का उपयोग करके कम या ज्यादा ओवरकिल होता है। क्या मैं इसे सही ढंग से समझ रहा हूँ? मेरी मुख्य चिंता ब्राउज़र संगतता है। तो उन शर्तों में, 'Ext.fly()। Dom' पर 'अपडेट()' का कोई लाभ है? धन्यवाद !! – DondeEstaMiCulo

+0

इससे कोई फर्क नहीं पड़ता। यह अधिक नहीं है - यह बिल्कुल वही है। संगतता में कोई अंतर नहीं है। –

2

मुझे लगता है कि आपने अपने प्रश्न का उत्तर दिया: "ब्राउज़र और प्लेटफ़ॉर्म संगतता महत्वपूर्ण हैं, और यदि दोनों मौलिक रूप से समान हैं, तो Ext.element.dom.innerHTML को अद्यतन() के लिए पूरी तरह से हटा देना शायद मेरा सबसे अच्छा समाधान होगा । " जेएस पुस्तकालयों का उद्देश्य (भाग में) अमूर्त ब्राउज़र अंतरों के लिए है; अद्यतन एक उदाहरण है।

@bmoeskau ऊपर लिखा है, अद्यतन() कि आप अपने वर्तमान समस्या के लिए सही की जरूरत नहीं है अतिरिक्त सुविधा प्रदान करता है। फिर भी, अद्यतन एक अच्छी पसंद है।