Skip to content

Event Handling e Data Binding

O Vue.js fornece mecanismos eficientes para manipular eventos e realizar o data binding, o que facilita a sincronização entre os dados e a interface do usuário. Vamos explorar dois conceitos fundamentais: manipulação de eventos e two-way data binding com v-model.

Manipulação de Eventos

A manipulação de eventos no Vue.js é feita através do uso de diretivas v-on ou a abreviação @, que permitem ouvir eventos DOM em elementos HTML. Esta capacidade é crucial para executar funções quando o usuário interage com a interface, como cliques, entradas de teclado, movimentos de mouse, etc.

Exemplo básico:

vue
<script setup lang="ts">
function greet() {
  alert("Olá, bem-vindo ao Vue.js!");
}
</script>

<template>
  <button @click="greet">Clique Aqui</button>
</template>

No exemplo acima, o método greet é chamado quando o botão é clicado. Você também pode passar argumentos para a função, lidar com eventos nativos, e até mesmo modificar o comportamento padrão de eventos com modificadores como .stop ou .prevent.

Two-Way Data Binding com v-model

O v-model é uma diretiva que facilita o two-way data binding, ou seja, uma sincronização bidirecional entre o modelo de dados e a interface do usuário. Isso é extremamente útil em formulários, onde o valor de um input precisa estar sincronizado com a propriedade de dados.

Exemplo com input de texto:

vue
<script setup lang="ts">
import { ref } from "vue";

const message = ref("");
</script>

<template>
  <input v-model="message" placeholder="Digite algo..." />
  <p>A mensagem é: {{ message }}</p>
</template>

Neste caso, qualquer alteração no campo de input será automaticamente refletida na propriedade message do componente, e qualquer alteração em message será imediatamente mostrada no input. v-model é essencialmente açúcar sintático para:

  • Atualizar a propriedade de dados quando um evento input é disparado no campo.
  • Atribuir o valor da propriedade de dados ao elemento HTML.

Além disso, o v-model pode ser personalizado para trabalhar com diferentes tipos de input, como checkboxes, radios e select boxes, ajustando-se automaticamente para cada tipo.

Conclusão

A combinação de manipulação de eventos e two-way data binding oferece uma maneira poderosa e flexível de construir interfaces dinâmicas com Vue.js. Isso não só facilita o gerenciamento de estados complexos da UI mas também promove uma organização de código mais limpa e uma menor probabilidade de erros.