2011-10-15 21 views
5

मैंने पैनल के HTML मान को निर्दिष्ट करके extJS में एक कस्टम HTML घटक बनाया है। मैं ईवेंट हैंडलर को तत्व में संलग्न करने में असमर्थ हूं (या वे किसी भी तरह फायरिंग नहीं कर रहे हैं)। हालांकि, मैं छिपाने की तरह घटक पर अन्य काम करने के लिए सक्षम हूँ, संलग्न आदिExtJs HTML घटक इवेंट

Ext.select('#toFieldDiv').on('click',function() { 
    alert("something"); 
}); //Doesn't Work 

Ext.select('#toFieldDiv').hide('slow'); //Works 

किसी भी विचार?

{ 
    xtype: 'panel', 
    x: 70, 
    y: 0, 
    html: "<div id=\"toFieldDiv\" class=\"to-field\"> </div>" 
} 

मैं भी jQuery के साथ एक ही कोशिश की है:

यहाँ मेरी घटक परिभाषा है। फिर छुपा काम करता है, लेकिन क्लिक नहीं।

+0

मुझे ExtJS में पैनलों के लिए एक क्लिक ईवेंट नहीं दिखाई देता है। – rwilliams

+0

धन्यवाद। मैं एक ईमेल फॉर्म के लिए एक हॉटमेल/फेसबुक प्रकार "टू" फ़ील्ड बनाने की कोशिश कर रहा हूं। इसके लिए, मैं एक ईमेल तत्व के अंदर ईमेल आईडी रख रहा था (xtype पैनल के रूप में बनाया गया)। क्या आपके मन में कुछ भी है जो क्लिक इवेंट प्रदान करता है जहां मैं गतिशील रूप से ईमेल आईडी रख सकता हूं? –

+0

मैंने एक कार्य कार्यान्वयन के साथ एक जवाब जोड़ा और विषय पर एक सेन्चा लेख के लिए एक लिंक प्रदान किया। – rwilliams

उत्तर

1

अंततः मैं समस्या को हल करने में कामयाब रहा। समस्या कोड के इस हिस्से में नहीं थी (जैसा कि मैंने कल्पना की थी)। घटना को काम करना चाहिए और काम करता है क्योंकि यह एक div तत्व पर एक सामान्य क्लिक घटना है।

समस्या यह थी क्योंकि div text पर एक और टेक्स्ट फ़ील्ड अतिरंजित हो रहा था, जिससे क्लिक तत्वों को div तत्व के बजाय टेक्स्टफिल्ड में पास किया गया था।

6

मुझे example and explanation मिला क्योंकि यह सेन्चा मंचों पर बॉक्स से बाहर क्यों नहीं काम करता है। मैंने नीचे एक सुझाए गए समाधान को लागू किया।

Ext.create('Ext.panel.Panel', { 
    title: 'Hello', 
    width: 200, 
    html: '<p>World!</p>', 
    listeners: {render: function(c){c.el.on('click', function() { alert('onclick');});}}, 
    renderTo: Ext.getBody() 
}); 
1

क्या आप ExtJS 4 का उपयोग कर रहे हैं?

सबसे पहले, क्या आपने "Ext.select" के बजाय "Ext.get" की कोशिश की है?

यदि आप ExtJS 4 का उपयोग कर रहे हैं, तो वास्तव में यह वास्तव में डोंग का एक आसान तरीका है। 4 आपको विगेट्स के "एल" पर ईवेंट सेट करने देता है।

+0

मैं ExtJS 3.3.1 –

+0

का उपयोग कर रहा हूं, इसलिए "Ext.get ('toFieldDiv') का उपयोग करके" आपकी समस्या ठीक करें? – Chao

1

Extjs 3.3.1 के लिए, आप इसके बजाय Ext.getCmp() का उपयोग कर सकते हैं।

यहां Ext.select() रिटर्न कंपोजिट एलिमेंटलाइट/कंपोजिट एलिमेंट और इन घटकों को पर्यवेक्षण से विस्तारित नहीं किया जाता है। तो यह() पर बाध्यकारी का समर्थन नहीं करता है।

Ext.getCmp() Ext.Component लौटाता है, तो यह कर सकता है।