आइए DOM तत्वों के इवेंट हैंडलिंग का वर्णन करके शुरू करें।
डोम नोड घटना से निपटने
सबसे पहले आप सीधे DOM नोड के साथ काम नहीं करना चाहेंगे। इसके बजाय आप शायद Ext.Elementइंटरफ़ेस का उपयोग करना चाहते हैं । ईवेंट हैंडलर असाइन करने के उद्देश्य से, Element.addListenerऔर Element.on(ये समतुल्य हैं) बनाए गए थे। इसलिए, उदाहरण के लिए, यदि हमारे पास html:
<div id="test_node"></div>
और हम clickईवेंट हैंडलर जोड़ना चाहते हैं ।
आइए पुनः प्राप्त करें Element:
var el = Ext.get('test_node');
अब आइए clickघटना के लिए डॉक्स देखें । यह हैंडलर के तीन पैरामीटर हो सकते हैं:
क्लिक करें (Ext.EventObject e, HTMLElement t, ऑब्जेक्ट eOpts)
यह सब सामान जानकर हम हैंडलर असाइन कर सकते हैं:
// event name event handler
el.on( 'click' , function(e, t, eOpts){
// handling event here
});
विजेट इवेंट हैंडलिंग
विजेट ईवेंट हैंडलिंग, डोम नोड ईवेंट हैंडलिंग के समान है।
सबसे पहले, विजेट इवेंट हैंडलिंग को Ext.util.Observableमिक्सिन का उपयोग करके महसूस किया जाता है । घटनाओं को ठीक से संभालने के लिए आपके विजेट Ext.util.Observableको एक मिक्सिन के रूप में काम करना चाहिए । सभी अंतर्निहित विजेट (जैसे पैनल, फॉर्म, ट्री, ग्रिड, ...) Ext.util.Observableडिफ़ॉल्ट रूप से मिक्सिन के रूप में है।
विजेट के लिए हैंडलर असाइन करने के दो तरीके हैं। पहले एक - विधि (या ) पर उपयोग करना हैaddListener । उदाहरण के लिए, Buttonविजेट बनाएं और clickइसे ईवेंट असाइन करें । सबसे पहले आपको हैंडलर के तर्कों के लिए ईवेंट के डॉक्स की जांच करनी चाहिए:
क्लिक करें (Ext.button.Button इस, ईवेंट, ऑब्जेक्ट eOpts)
अब उपयोग करते हैं on:
var myButton = Ext.create('Ext.button.Button', {
text: 'Test button'
});
myButton.on('click', function(btn, e, eOpts) {
// event handling here
console.log(btn, e, eOpts);
});
दूसरा तरीका विजेट के श्रोताओं को कॉन्फ़िगर करने का उपयोग करना है :
var myButton = Ext.create('Ext.button.Button', {
text: 'Test button',
listeners : {
click: function(btn, e, eOpts) {
// event handling here
console.log(btn, e, eOpts);
}
}
});
ध्यान दें कि Buttonविजेट एक विशेष प्रकार का विजेट है। क्लिक इवेंट को handlerकॉन्फ़िगर करके इस विजेट को सौंपा जा सकता है :
var myButton = Ext.create('Ext.button.Button', {
text: 'Test button',
handler : function(btn, e, eOpts) {
// event handling here
console.log(btn, e, eOpts);
}
});
कस्टम इवेंट फायरिंग
सबसे पहले आपको addEvents पद्धति का उपयोग करके एक घटना दर्ज करने की आवश्यकता है :
myButton.addEvents('myspecialevent1', 'myspecialevent2', 'myspecialevent3', /* ... */);
addEventsविधि का उपयोग वैकल्पिक है। जैसा कि इस पद्धति की टिप्पणियां कहती हैं कि इस पद्धति का उपयोग करने की कोई आवश्यकता नहीं है, लेकिन यह घटनाओं के प्रलेखन के लिए जगह प्रदान करती है।
अपने ईवेंट का उपयोग करने के लिए अग्निरोधक विधि का उपयोग करें :
myButton.fireEvent('myspecialevent1', arg1, arg2, arg3, /* ... */);
arg1, arg2, arg3, /* ... */हैंडलर में पारित किया जाएगा। अब हम आपकी घटना को संभाल सकते हैं:
myButton.on('myspecialevent1', function(arg1, arg2, arg3, /* ... */) {
// event handling here
console.log(arg1, arg2, arg3, /* ... */);
});
यह ध्यान देने योग्य है कि जब आप नए विजेट को परिभाषित कर रहे हैं, तो addEvents मेथड कॉल डालने का सबसे अच्छा स्थान विजेट की initComponentविधि है:
Ext.define('MyCustomButton', {
extend: 'Ext.button.Button',
// ... other configs,
initComponent: function(){
this.addEvents('myspecialevent1', 'myspecialevent2', 'myspecialevent3', /* ... */);
// ...
this.callParent(arguments);
}
});
var myButton = Ext.create('MyCustomButton', { /* configs */ });
ईवेंट को रोकना
बुदबुदाहट को रोकने के लिए आप कर सकते हैं return falseया उपयोग कर सकते हैं Ext.EventObject.preventDefault()। ब्राउज़र की डिफ़ॉल्ट कार्रवाई के उपयोग को रोकने के लिए Ext.EventObject.stopPropagation()।
उदाहरण के लिए, क्लिक करें ईवेंट हैंडलर को हमारे बटन पर असाइन करें। और नहीं छोड़ा बटन पर क्लिक किया गया तो डिफ़ॉल्ट ब्राउज़र कार्रवाई को रोकने के लिए:
myButton.on('click', function(btn, e){
if (e.button !== 0)
e.preventDefault();
});