Sencha Touch - Eventos
Eventos são algo que são acionados quando algo acontece com a classe. Por exemplo, quando um botão é clicado ou antes / depois de um elemento ser renderizado.
Métodos de escrever eventos
A seguir estão os métodos de gravação de eventos.
- Eventos integrados usando ouvintes.
- Anexar eventos mais tarde
- Eventos personalizados
Eventos integrados usando ouvintes
O Sencha Touch fornece propriedade de ouvinte para gravar eventos e eventos customizados em arquivos Sencha Touch.
Escrevendo ouvinte no Sencha Touch
Vamos adicionar o ouvinte no próprio programa anterior, adicionando a propriedade listen ao painel, mostrado a seguir -
<!DOCTYPE html>
<html>
<head>
<link href = "https://cdn.sencha.com/touch/sencha-touch-2.4.2/resources/css/sencha-touch.css" rel = "stylesheet" />
<script type = "text/javascript" src = "https://cdn.sencha.com/touch/sencha-touch-2.4.2/sencha-touch-all.js"></script>
<script type = "text/javascript">
Ext.application({
name: 'Sencha', launch: function() {
Ext.create('Ext.Panel', {
html: 'My Panel', fullscreen: true, listeners: {
painted: function() {
Ext.Msg.alert('I was painted to the screen');
}
}
});
}
});
</script>
</head>
</html>
Isso produzirá o seguinte resultado -
Dessa forma, também podemos escrever vários eventos na propriedade listeners.
Vários eventos no mesmo ouvinte
<!DOCTYPE html>
<html>
<head>
<link href = "https://cdn.sencha.com/touch/sencha-touch-2.4.2/resources/css/sencha-touch.css" rel = "stylesheet" />
<script type = "text/javascript" src = "https://cdn.sencha.com/touch/sencha-touch-2.4.2/sencha-touch-all.js"></script>
<script type = "text/javascript">
Ext.application({
name: 'Sencha',
launch: function() {
var myButton = Ext.Viewport.add({
xtype: 'button',
centered: true,
text: 'Click me'
});
myButton.on({
tap: function() {
var randomWidth = 100 + Math.round(Math.random() * 200);
this.setWidth(randomWidth);
},
widthchange: function(button, newWidth, oldWidth) {
alert('My width changed from ' + oldWidth + ' to ' + newWidth);
}
});
}
});
</script>
</head>
</html>
Isso produzirá o seguinte resultado -
Anexando evento mais tarde
No método anterior de escrever eventos, escrevemos eventos em ouvintes no momento da criação dos elementos.
A outra maneira de anexar eventos é a seguinte -
<!DOCTYPE html>
<html>
<head>
<link href = "https://cdn.sencha.com/touch/sencha-touch-2.4.2/resources/css/sencha-touch.css" rel = "stylesheet" />
<script type = "text/javascript" src = "https://cdn.sencha.com/touch/sencha-touch-2.4.2/sencha-touch-all.js"></script>
<script type = "text/javascript">
Ext.application({
name: 'Sencha',
launch: function() {
var myButton = Ext.Viewport.add({
xtype: 'button',
centered: true,
text: 'Click me'
});
myButton.on('tap', function() {
alert("Event listener attached by .on");
});
}
});
</script>
</head>
</html>
Isso produzirá o seguinte resultado -
Eventos personalizados
Podemos escrever eventos personalizados no Sencha Touch e disparar os eventos com o método fireEvent. O exemplo a seguir explica como escrever eventos personalizados.
<!DOCTYPE html>
<html>
<head>
<link href = "https://cdn.sencha.com/touch/sencha-touch-2.4.2/resources/css/sencha-touch.css" rel = "stylesheet" />
<script type = "text/javascript" src = "https://cdn.sencha.com/touch/sencha-touch-2.4.2/sencha-touch-all.js"></script>
<script type = "text/javascript">
Ext.application({
name: 'Sencha',
launch: function() {
var myButton = Ext.Viewport.add({
xtype: 'button',
centered: true,
text: "Just wait 5 seconds",
listeners: {
myEvent: function(button, points) {
alert('myEvent was fired! You score ' + points + ' points');
}
}
});
Ext.defer(function() {
var number = Math.ceil(Math.random() * 100);
myButton.fireEvent('myEvent', myButton, number);
}, 5000);
}
});
</script>
</head>
</html>
Assim que a página for carregada e o documento pronto, a página da IU com o botão aparecerá e como estamos disparando um evento após 5 segundos, assim que o documento estiver pronto, a caixa de alerta aparecerá após 5 segundos.
Aqui, escrevemos o evento personalizado 'myEvent' e estamos disparando eventos como button.fireEvent (eventName);