@leila.dickinson
В Vue.js события можно создавать на компонентах с помощью директивы v-on
или @
.
Например, чтобы создать событие click
на кнопке, необходимо добавить директиву v-on:click
или @click
к элементу, который будет генерировать событие. При этом необходимо указать метод, который будет вызван при срабатывании события:
1 2 3 4 5 6 7 8 9 10 11 12 13 |
<template> <button v-on:click="handleClick">Нажми меня</button> </template> <script> export default { methods: { handleClick() { console.log('Кнопка была нажата') } } } </script> |
Когда пользователь кликает на кнопку, вызывается метод handleClick
, который выводит сообщение в консоль.
Также можно передавать аргументы в метод при генерации события:
1 2 3 4 5 6 7 8 9 10 11 12 13 |
<template> <button v-on:click="handleClick('Hello')">Нажми меня</button> </template> <script> export default { methods: { handleClick(msg) { console.log(msg) } } } </script> |
Когда пользователь кликает на кнопку, вызывается метод handleClick
с аргументом 'Hello'
, который выводит сообщение 'Hello'
в консоль.
Также можно использовать события на пользовательских компонентах, передавая событие из дочернего компонента в родительский с помощью $emit
:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 |
<!-- Родительский компонент --> <template> <div> <p>Количество кликов: {{ count }}</p> <custom-button v-on:customClick="handleCustomClick"></custom-button> </div> </template> <script> import CustomButton from './CustomButton.vue' export default { components: { CustomButton }, data() { return { count: 0 } }, methods: { handleCustomClick() { this.count++ } } } </script> <!-- Дочерний компонент --> <template> <button v-on:click="$emit('customClick')">Нажми меня</button> </template> |
Когда пользователь кликает на кнопку в дочернем компоненте, событие customClick
генерируется и передается в родительский компонент, где вызывается метод handleCustomClick
, который увеличивает значение переменной count
на единицу. Затем значение переменной count
выводится на страницу.
@leila.dickinson
Для создания событий на компонентах в Vue.js можно использовать директиву v-on
или сокращенную форму @
. Например, чтобы создать событие click
на кнопке, необходимо добавить директиву v-on:click
или @click
к элементу.
Например, создадим кнопку, при клике на которую будет выполняться определенное действие:
1 2 3 4 5 6 7 8 9 10 11 12 13 |
<template> <button @click="handleClick">Нажми меня</button> </template> <script> export default { methods: { handleClick() { console.log('Кнопка была нажата'); } } } </script> |
Также можно передавать аргументы в метод при генерации события:
1 2 3 4 5 6 7 8 9 10 11 12 13 |
<template> <button @click="handleClick('Привет')">Нажми меня</button> </template> <script> export default { methods: { handleClick(message) { console.log(message); } } } </script> |
Использование событий также возможно на пользовательских компонентах, передавая событие из дочернего компонента в родительский с помощью $emit
:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 |
<!-- Родительский компонент --> <template> <div> <p>Количество кликов: {{ count }}</p> <custom-button @customClick="handleCustomClick"></custom-button> </div> </template> <script> import CustomButton from './CustomButton.vue' export default { components: { CustomButton }, data() { return { count: 0 } }, methods: { handleCustomClick() { this.count++ } } } </script> <!-- Дочерний компонент (CustomButton) --> <template> <button @click="$emit('customClick')">Нажми меня</button> </template> |
При клике на кнопку в дочернем компоненте будет сгенерировано событие customClick
, которое передается в родительский компонент, активируя соответствующий метод.