Cet article vous présentera les connaissances de base du traitement des événements Vue. Il a une certaine valeur de référence. Les amis dans le besoin peuvent s'y référer. J'espère qu'il sera utile à tout le monde.
La gestion des événements Vue est un aspect nécessaire de chaque projet Vue. Il est utilisé pour capturer les entrées des utilisateurs, partager des données et de nombreuses autres façons créatives. [Recommandations associées : "Tutoriel vue.js"]
Dans cet article, nous présenterons les connaissances de base et fournirons quelques exemples de code pour gérer les événements. Il ne contient que les astuces/méthodes que je trouve les plus utiles. Pour une analyse approfondie de tout ce que Vue peut faire, consultez la documentation de Vue.
En utilisant la directive v-on
(@
en abrégé), nous pouvons écouter les événements DOM et exécuter des méthodes de gestion ou du Javascript en ligne.
// v-on 指令 <div v-on:click='handleClick' /> // OR <div @click='handleClick' />
Un cas d'utilisation courant dans n'importe quel framework Web est de vouloir que les composants enfants puissent émettre des événements vers leurs composants parents, ce qui est également le principe de deux liaison de données à sens unique. Un exemple courant de
consiste à envoyer des données d'un composant input
vers un formulaire parent.
La syntaxe d'émission des événements est différente selon que l'on utilise l'API Options ou l'API Composition.
Dans l'API Options, on peut simplement appeler this.$emit(eventName, payload)
, par exemple :
export default { methods: { handleUpdate: () => { this.$emit('update', 'Hello World') } } }
Cependant, l'API Composition est utilisée différemment. Vous devez utiliser la méthode setup
fournie par Vue3. emit
avec les mêmes paramètres que l'API Options. emit
export default { setup (props, context) { const handleUpdate = () => { context.emit('update', 'Hello World') } return { handleUpdate } } }
export default { setup (props, { emit }) { const handleUpdate = () => { emit('update', 'Hello World') } return { handleUpdate } } }
<HelloWorld @update='inputUpdated'/>
dans le modèle pour accéder à la valeur transmise. $event
<HelloWorld @update='inputUpdated($event)'/>
<HelloWorld @update='inputUpdated'/> // ... methods: { inputUpdated: (value) => { console.log(value) // WORKS TOO } }
: v-on
<div @mousedown='handleEvent' @mouseup='handleEvent' @click='handleEvent' @dblclick='handleEvent' @mousemove='handleEvent' @mouseover='handleEvent' @mousewheel='handleEvent' @mouseout='handleEvent' > Interact with Me! </div>
, left
et right
. middle
<!-- 这只会触发鼠标左键 --> <div @mousedown.left='handleLeftClick'> Left </div>
<input type='text' placeholder='Type something' @keypress='handleKeyPressed' @keydown='handleKeyDown' @keyup='handleKeyUp' />
, enter
, tab
, delete
, esc
, space
, up
, down
, left
)right
<!-- Trigger even when enter is released --> <input type='text' placeholder='Type something' @keyup.enter='handleEnter' /> <!-- OR --> <input type='text' placeholder='Type something' @keyup.13='handleEnter' />
ou Command
. shift
<!-- 自定义快捷方式,杨使用Shift + 8 创建列表 --> <input type='text' placeholder='Type something' @keyup.shift.56='createList' />
pour garantir que l'événement n'est déclenché que lorsque la touche que nous spécifions est enfoncée et aucune autre touche. exact
<!-- 自定义快捷方式,只有Shift + 8 这两个按下时才会创建列表--> <input type='text' placeholder='Type something' @keyup.shift.56.exact='createList' />
<!-- 阻止默认行为 --> <form @submit.prevent> <!-- 阻止冒泡 --> <form @submit.stop='submitForm'> <!-- 阻止默认行为和冒泡 --> <form @submit.stop.prevent='submitForm'> <!-- 防止事件被多次触发 --> <p @close.once='handleClose'>
Adresse originale en anglais : https://segmentfault.com/a/1190000039938779Auteur : Fernando DoglioTraducteur : Front-end XiaozhiPour plus de connaissances sur la programmation, veuillez visiter :
Vidéo de programmation ! !
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!