Polímero - Eventos
Os eventos são usados pelos elementos que podem se comunicar com as mudanças de estado da árvore DOM para os elementos pais e usam as APIs DOM padrão para criar, despachar e ouvir eventos. oannotated event listeners são usados pelo Polymer, que define os ouvintes de evento como pequenos pedaços do modelo DOM e podem ser adicionados aos filhos do DOM usando anotações de um evento no modelo.
Exemplo
O exemplo a seguir adiciona ouvintes de eventos anotados no modelo. Crie um arquivo chamado index.html e coloque o código a seguir nele.
<!doctype html>
<html>
<head>
<title>Polymer Example</title>
<script src = "bower_components/webcomponentsjs/webcomponents-lite.js"></script>
<link rel = "import" href="bower_components/polymer/polymer.html">
<link rel = "import" href = "annotated-eventlistners.html">
</head>
<body>
<template id = "myapp" is = "dom-bind">
//tap event is part of gesture events that fires consistently across both mobile
//and desktop devices
<annotated-eventlistners on-tap = "myClick"></annotated-eventlistners>
</template>
<script>
var myval = document.querySelector('#myapp');
myval.myClick = function(e) {
console.log('Hello World!!!');
};
</script>
</body>
</html>
Resultado
Para executar o aplicativo, navegue até o diretório do projeto criado e execute o seguinte comando.
polymer serve
Agora abra o navegador e navegue até http://127.0.0.1:8000/. A seguir será a saída.
Clique no texto para ver o resultado no console, conforme mostrado na captura de tela a seguir.
Eventos Personalizados
Os eventos personalizados podem ser disparados usando o construtor CustomEvent padrão e o método dispatchEvent do elemento host.
Considere o exemplo a seguir que dispara o evento personalizado do elemento host. Abra o arquivo index.html e adicione o seguinte código a ele.
<!doctype html>
<html>
<head>
<title>Polymer Example</title>
<script src = "bower_components/webcomponentsjs/webcomponents-lite.js"></script>
<link rel = "import" href = "bower_components/polymer/polymer.html">
<link rel = "import" href = "custom-event.html">
</head>
<body>
<custom-event></custom-event>
<script>
document.querySelector('custom-event').addEventListener('customValue', function (e) {
console.log(e.detail.customval); // true
})
</script>
</body>
</html>
Agora, crie outro arquivo chamado custom-event.html e inclua o código a seguir.
<link rel = "import" href = "bower_components/polymer/polymer-element.html">
//it specifies the start of an element's local DOM
<dom-module id = "custom-event">
<template>
<h2>Custom Event Example</h2>
<button on-click = "myClick">Click Here</button>
</template>
<script>
Polymer ({
is: "custom-event", myClick(e) {
this.dispatchEvent(new CustomEvent('customValue', {detail: {customval: true}}));
}
});
</script>
</dom-module>
Resultado
Execute o aplicativo conforme mostrado no exemplo anterior e navegue até http://127.0.0.1:8000/. A seguir será a saída.
Agora clique no botão, abra o console e veja o valor verdadeiro do evento personalizado, conforme mostrado na captura de tela a seguir.
Agora movendo com "retargeting de evento", que especifica o destino do evento onde o elemento pode ser representado no mesmo escopo do elemento de escuta. Por exemplo, o destino pode ser considerado como um elemento no documento principal, ao usar um ouvinte no documento principal, não em uma árvore de sombra. Você pode consultar o capítulo sobre estilo de sombra de polímero para obter mais explicações e exemplos.
Eventos de Gestos
Os eventos de gesto podem ser usados para interações do usuário, que definem uma melhor interação em dispositivos móveis e de toque. Por exemplo, o evento de toque é uma parte dos eventos de gesto que dispara de forma consistente em dispositivos móveis e desktop.
Você pode consultar o exemplo de evento de gesto explicado no início deste capítulo, que usa on-tap evento que adiciona ouvintes de eventos anotados no modelo.
A tabela a seguir lista diferentes tipos de eventos de gesto.
Sr. Não. | Tipo e descrição do evento | Propriedades |
---|---|---|
1 | down Ele especifica que o dedo / botão foi movido para baixo. |
|
2 | up Ele especifica que o dedo / botão foi movido para cima. |
|
3 | tap Ele especifica a ocorrência de ações para cima e para baixo. |
|
4 | track Ele especifica a ocorrência de ações para cima e para baixo. |
|
Exemplo
O exemplo a seguir especifica o uso de tipos de eventos de gesto no modelo. Crie um arquivo chamado index.html e coloque o código a seguir nele.
<!doctype html>
<html>
<head>
<title>Polymer Example</title>
<script src = "bower_components/webcomponentsjs/webcomponents-lite.js"></script>
<link rel = "import" href = "bower_components/polymer/polymer.html">
<link rel = "import" href = "gesture-event.html">
</head>
<body>
<gesture-event></gesture-event>
</body>
</html>
Agora, crie outro arquivo denominado gesto-event.html e inclua o código a seguir.
<link rel = "import" href = "bower_components/polymer/polymer-element.html">
//it specifies the start of an element's local DOM
<dom-module id = "gesture-event">
<template>
<style>
#box {
width: 200px;
height: 200px;
background: #D7D0B7;
}
</style>
<h2>Gesture Event Types Example</h2>
<div id = "box" on-track = "myClick">{{track_message}}</div>
</template>
<script>
Polymer ({
is: 'gesture-event', myClick: function(e) {
switch(e.detail.state) {
case 'start':
this.track_message = 'Tracking event started...';
break;
case 'track':
this.track_message = 'Tracking event is in progress... ' +
e.detail.x + ', ' + e.detail.y;
break;
case 'end':
this.track_message = 'Tracking event ended...';
break;
}
}
});
</script>
</dom-module>
Resultado
Execute o aplicativo conforme mostrado no exemplo anterior e navegue até http://127.0.0.1:8081/. Agora comece a arrastar o mouse no elemento, ele exibirá o estado conforme mostrado na imagem a seguir.
Após arrastar o mouse no elemento, ele mostrará o andamento do rastreamento de eventos conforme mostrado na imagem a seguir.
Ao parar de arrastar o mouse, o evento de rastreamento será encerrado no elemento, conforme mostrado na imagem a seguir.