Ext.js - Özel Etkinlikler ve dinleyiciler
Olaylar, sınıfa bir şey olduğunda ateşlenen şeylerdir. Örneğin, bir düğme tıklandığında veya öğe oluşturulmadan önce / sonra.
Etkinlik Yazma Yöntemleri
- Dinleyicileri kullanan yerleşik etkinlikler
- Olayları daha sonra eklemek
- Özel olaylar
Dinleyicileri Kullanan Yerleşik Etkinlikler
Ext JS, Ext JS dosyalarında olaylar ve özel olaylar yazmak için dinleyici özelliği sağlar.
Writing listener in Ext JS
Panele bir listen özelliği ekleyerek dinleyiciyi önceki programın içine ekleyeceğiz.
<!DOCTYPE html>
<html>
<head>
<link href = "https://cdnjs.cloudflare.com/ajax/libs/extjs/6.0.0/classic/theme-neptune/resources/theme-neptune-all.css"
rel = "stylesheet" />
<script type = "text/javascript"
src = "https://cdnjs.cloudflare.com/ajax/libs/extjs/6.0.0/ext-all.js"></script>
<script type = "text/javascript">
Ext.onReady(function() {
Ext.create('Ext.Button', {
renderTo: Ext.getElementById('helloWorldPanel'),
text: 'My Button',
listeners: {
click: function() {
Ext.MessageBox.alert('Alert box', 'Button is clicked');
}
}
});
});
</script>
</head>
<body>
<p> Please click the button to see event listener </p>
<div id = 'helloWorldPanel' /> <!-- panel will be rendered here-- >
</body>
</html>
Yukarıdaki program aşağıdaki sonucu verecektir -
Bu şekilde, listeners özelliğinde birden çok olay da yazabiliriz.
Multiple Events in the Same Listener
<!DOCTYPE html>
<html>
<head>
<link href = "https://cdnjs.cloudflare.com/ajax/libs/extjs/6.0.0/classic/theme-neptune/resources/theme-neptune-all.css"
rel = "stylesheet" />
<script type = "text/javascript"
src = "https://cdnjs.cloudflare.com/ajax/libs/extjs/6.0.0/ext-all.js"></script>
<script type = "text/javascript">
Ext.onReady(function() {
Ext.get('tag2').hide()
Ext.create('Ext.Button', {
renderTo: Ext.getElementById('helloWorldPanel'),
text: 'My Button',
listeners: {
click: function() {
this.hide();
},
hide: function() {
Ext.get('tag1').hide();
Ext.get('tag2').show();
}
}
});
});
</script>
</head>
<body>
<div id = "tag1">Please click the button to see event listener.</div>
<div id = "tag2">The button was clicked and now it is hidden.</div>
<div id = 'helloWorldPanel' /> <!-- panel will be rendered here-- >
</body>
</html>
Daha Sonra Bir Etkinlik Eklemek
Önceki olay yazma yönteminde, öğeler yaratma sırasında dinleyicilerde olaylar yazdık. Diğer yol ise olayları eklemektir.
<!DOCTYPE html>
<html>
<head>
<link href = "https://cdnjs.cloudflare.com/ajax/libs/extjs/6.0.0/classic/theme-neptune/resources/theme-neptune-all.css"
rel = "stylesheet" />
<script type = "text/javascript"
src = "https://cdnjs.cloudflare.com/ajax/libs/extjs/6.0.0/ext-all.js"></script>
<script type = "text/javascript">
Ext.onReady(function() {
var button = Ext.create('Ext.Button', {
renderTo: Ext.getElementById('helloWorldPanel'),
text: 'My Button'
});
// This way we can attach event to the button after the button is created.
button.on('click', function() {
Ext.MessageBox.alert('Alert box', 'Button is clicked');
});
});
</script>
</head>
<body>
<p> Please click the button to see event listener </p>
<div id = 'helloWorldPanel' /> <!-- panel will be rendered here-- >
</body>
</html>
Yukarıdaki program aşağıdaki sonucu verecektir -
Özel Etkinlikler
Ext JS'de özel olaylar yazıp, olayları fireEvent metodu ile ateşleyebiliriz. Aşağıdaki örnek, özel etkinliklerin nasıl yazılacağını açıklamaktadır.
<!DOCTYPE html>
<html>
<head>
<link href = "https://cdnjs.cloudflare.com/ajax/libs/extjs/6.0.0/classic/theme-neptune/resources/theme-neptune-all.css"
rel = "stylesheet" />
<script type = "text/javascript"
src = "https://cdnjs.cloudflare.com/ajax/libs/extjs/6.0.0/ext-all.js"></script>
<script type = "text/javascript">
Ext.onReady(function() {
var button = Ext.create('Ext.Button', {
renderTo: Ext.getElementById('helloWorldPanel'),
text: 'My Button',
listeners: {
myEvent: function(button) {
Ext.MessageBox.alert('Alert box', 'My custom event is called');
}
}
});
Ext.defer(function() {
button.fireEvent('myEvent');
}, 5000);
});
</script>
</head>
<body>
<p> The event will be called after 5 seconds when the page is loaded. </p>
<div id = 'helloWorldPanel' /> <!-- panel will be rendered here-- >
</body>
</html>
Sayfa yüklendikten ve belge hazır olduğunda, düğmeli UI sayfası görünecektir ve 5 saniye sonra bir olayı tetiklediğimiz için belge hazırdır. Uyarı kutusu 5 saniye sonra görünecektir.
Burada, 'myEvent' özel olayını yazdık ve olayları button.fireEvent (eventName) olarak tetikliyoruz;