আসুন DOM উপাদানগুলির ইভেন্ট হ্যান্ডলিং বর্ণনা করে শুরু করি।
ডোম নোড ইভেন্ট হ্যান্ডলিং
সবার আগে আপনি সরাসরি ডোম নোডের সাথে কাজ করতে চান না। পরিবর্তে আপনি সম্ভবত Ext.Elementইন্টারফেস ব্যবহার করতে চান । ইভেন্ট হ্যান্ডলারগুলি নির্ধারণের উদ্দেশ্যে Element.addListenerএবং Element.on(এগুলি সমতুল্য) তৈরি করা হয়েছিল। সুতরাং, উদাহরণস্বরূপ, যদি আমাদের এইচটিএমএল থাকে:
<div id="test_node"></div>
এবং আমরা clickইভেন্ট হ্যান্ডলার যোগ করতে চান ।
আসুন পুনরুদ্ধার করা যাক Element:
var el = Ext.get('test_node');
আসুন এখন clickইভেন্টের জন্য ডক্স পরীক্ষা করা যাক । এটির হ্যান্ডলারের তিনটি প্যারামিটার থাকতে পারে:
ক্লিক করুন (Ext.EventObject ই, HTMLElement টি, অবজেক্ট 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);
}
});
কাস্টম ইভেন্ট গুলিবর্ষণ
সবার আগে আপনাকে অ্যাডএভেণ্টস পদ্ধতি ব্যবহার করে একটি ইভেন্ট নিবন্ধভুক্ত করতে হবে :
myButton.addEvents('myspecialevent1', 'myspecialevent2', 'myspecialevent3', /* ... */);
addEventsপদ্ধতিটি ব্যবহার করা alচ্ছিক। এই পদ্ধতির মন্তব্যে বলা হয়েছে যে এই পদ্ধতিটি ব্যবহার করার দরকার নেই তবে এটি ইভেন্ট ডকুমেন্টেশনের জন্য জায়গা সরবরাহ করে।
আপনার ইভেন্ট ব্যবহার আগুনে fireEvent পদ্ধতি:
myButton.fireEvent('myspecialevent1', arg1, arg2, arg3, /* ... */);
arg1, arg2, arg3, /* ... */হ্যান্ডলারের মধ্যে পাস করা হবে। এখন আমরা আপনার ইভেন্টটি পরিচালনা করতে পারি:
myButton.on('myspecialevent1', function(arg1, arg2, arg3, /* ... */) {
// event handling here
console.log(arg1, arg2, arg3, /* ... */);
});
এটি উল্লেখ করার মতো বিষয় যে আপনি নতুন উইজেটটি সংজ্ঞায়িত করার সময় অ্যাডইভেন্টস পদ্ধতি কল সন্নিবেশ করানোর জন্য সেরা স্থানটি উইজেটের 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();
});