Gestion d'événement
Écouter des événements
Nous pouvons utiliser la directive
v-on
, que nous raccourcissons généralement par le symbole
@
, pour écouter les événements DOM et exécuter du JavaScript lorsqu'ils sont déclenchés. L'utilisation serait alors
v-on:click="handler"
ou avec le raccourci,
@click="handler"
.
La valeur du gestionnaire peut alors prendre l'une des formes suivantes :
-
Gestionnaires en ligne : Du JavaScript inline qui sera exécuté lorsque l'événement sera déclenché (similaire à l'attribut natif
onclick
). -
Méthodes gestionnaires : Un nom ou un chemin de propriété qui pointe vers une méthode définie sur le composant.
Gestionnaires en ligne
Les gestionnaires inline sont généralement utilisés dans des cas simples, par exemple :
Méthodes gestionnaires
Cependant, pour de nombreux gestionnaires d'événements, la logique sera plus complexe et ne sera probablement pas réalisable avec des gestionnaires en ligne. C'est pourquoi
v-on
peut également accepter le nom ou le chemin d'une méthode de composant que vous souhaitez appeler.
Par exemple :
Une méthode gestionnaire reçoit automatiquement l'objet événement natif du DOM qui la déclenche - dans l'exemple ci-dessus, nous pouvons accéder à l'élément qui envoie l'événement via
event.target
.
Voir aussi : Typer les gestionnaires d'événements
Méthodes vs. Détection en ligne
Le compilateur de templates détecte les méthodes gestionnaires en vérifiant si la valeur en chaîne de caractères
v-on
est un identifiant JavaScript ou un chemin d'accès de propriété valide. Par exemple,
foo
,
foo.bar
et
foo['bar']
sont traités comme des méthodes gestionnaires, tandis que
foo()
et
count++
sont traités comme des gestionnaires en ligne.
Appeler des méthodes dans les gestionnaires en ligne
Au lieu de se lier directement à un nom de méthode, nous pouvons également appeler des méthodes dans un gestionnaire en ligne. Cela nous permet de passer à la méthode des arguments personnalisés au lieu de l'événement natif :
Accéder à l'argument de l'événement dans les gestionnaires en ligne
Parfois, nous avons aussi besoin d'accéder à l'événement original du DOM dans un gestionnaire en ligne. Vous pouvez le passer dans une méthode en utilisant la variable spéciale
$event
, ou utiliser une fonction fléchée en ligne :
Modificateurs d'événements
Il est courant d'avoir besoin d'appeler
event.preventDefault()
ou
event.stopPropagation()
à l'intérieur des gestionnaires d'événements. Bien que nous puissions le faire facilement à l'intérieur des méthodes, il serait préférable que les méthodes puissent se focaliser exclusivement sur la logique des données plutôt qu'avoir à gérer les détails des événements du DOM.
Pour résoudre ce problème, Vue fournit des
modificateurs d'événements
pour
v-on
. Rappelons que les modificateurs sont des postfixes de directives désignés par un point.
-
.stop
-
.prevent
-
.self
-
.capture
-
.once
-
.passive
TIP
L'ordre est important lorsqu'on utilise des modificateurs car le code correspondant est généré dans le même ordre. De ce fait, utiliser
@click.prevent.self
empêchera
l'action par défaut du clic sur l'élément lui-même et ses enfants
, alors que
@click.self.prevent
empêchera seulement l'action par défaut de click sur l'élément lui-même.
Les modificateurs
.capture
,
.once
, et
.passive
imitent les
options de la méthode native
addEventListener
:
Le modificateur
.passive
est généralement utilisé avec les écouteurs d'événements de touche pour
améliorer les performances sur les périphériques mobiles
.
TIP
N'utilisez pas
.passive
et
.prevent
ensemble, car
.passive
indique déjà au navigateur que vous n'avez
pas
l'intention d'empêcher le comportement par défaut de l'événement, et vous aurez probablement un avertissement du navigateur si vous le faites.
Modificateurs de touche
Lorsque nous écoutons des événements du clavier, nous avons souvent besoin de vérifier des touches spécifiques. Vue permet d'ajouter des modificateurs de touches pour
v-on
ou
@
lors de l'écoute d'événements du clavier :
Vous pouvez utiliser directement n'importe quel nom de touche exposé via
KeyboardEvent.key
comme des modificateurs en les convertissant en kebab-case.
Dans l'exemple ci-dessus, le gestionnaire ne sera appelé que si
$event.key
est égal à
'PageDown'
.
Alias de touche
Vue fournit des alias pour les touches les plus couramment utilisées :
-
.enter
-
.tab
-
.delete
(capture à la fois les touches "Delete" et "Backspace") -
.esc
-
.space
-
.up
-
.down
-
.left
-
.right
Touches de modification du système
Vous pouvez utiliser les modificateurs suivant pour déclencher des écouteurs d'événements de la souris ou du clavier seulement lorsque la touche modificatrice correspondante est pressée :
-
.ctrl
-
.alt
-
.shift
-
.meta
Note
Sur les claviers Macintosh, meta est la touche commande (⌘). Sur les claviers Windows, meta est la touche Windows (⊞). Sur les claviers Sun Microsystems, meta est marqué d'un diamant solide (◆). Sur certains claviers, en particulier les claviers MIT et ceux des machines Lisp et leurs successeurs, tels que le clavier Knight, le clavier space-cadet, meta est étiqueté "META". Sur les claviers Symbolics, meta est étiqueté "META" ou "Meta".
Par exemple :
TIP
Notez que les touches modificatrices sont différentes des touches normales et que lorsqu'elles sont utilisées avec des événements
keyup
, elles doivent être appuyées lorsque l'événement est émis. En d'autres termes,
keyup.ctrl
ne se déclenchera que si vous relâchez une touche tout en maintenant la touche
ctrl
enfoncée. Il ne se déclenchera pas si vous relâchez la touche
ctrl
seulement.
Modificateur
.exact
Le modificateur
.exact
permet le contrôle de la combinaison exacte de touches de modification du système requise pour déclencher un événement.