Gestionnaires d'événements Vue.js

L'écoute des événements peut utiliser la directive v-on :

v-on

<div id="app"> <button v-on:click="counter += 1">Ajouter 1</button> <p>Ce bouton a été cliqué {{ counter }} fois.</p> </div> <script> new Vue({ el: '#app', data: { counter: 0 } }) </script>

Essayez-le vous-même »

Habituellement, nous devons utiliser une méthode pour appeler une méthode JavaScript.

v-on peut accepter une méthode définie à invoquer.

v-on

<div id="app"> <!--`greet` est le nom de la méthode définie ci-dessous--> <button v-on:click="greet">Saluer</button> </div> <script>var app = new Vue({ el: '#app', data: { name: 'Vue.js' }, // Définir les méthodes dans l'objet `methods` methods: { greet: function (event) { // `this` dans une méthode fait référence à l'instance Vue actuelle alert('Hello ' + this.name + '!') // `event` est l'événement DOM natif if (event) { alert(event.target.tagName) } } } }) // Vous pouvez aussi appeler la méthode directement en JavaScript app.greet() // -> 'Hello Vue.js!'</script>

Essayez-le vous-même »

En plus de lier directement à une méthode, vous pouvez également utiliser des instructions JavaScript en ligne :

v-on

<div id="app"> <button v-on:click="say('hi')">Dire bonjour</button> <button v-on:click="say('what')">Dire quoi</button> </div> <script> new Vue({ el: '#app', methods: { say: function (message) { alert(message) } } }) </script>

Essayez-le vous-même »

Modificateurs d'événement

Vue.js fournit des modificateurs d'événements pour v-on afin de gérer les détails des événements DOM, tels que event.preventDefault() ou event.stopPropagation().

Vue.js utilise le point.comme suffixe de directive pour invoquer des modificateurs.

  • .stop- Empêcher la propagation
  • .prevent- Empêcher l'événement par défaut
  • .capture- Empêcher la capture
  • .self- N'écouter que les événements qui se déclenchent sur cet élément
  • .once- Déclencher une seule fois
  • .left- Événement de clic gauche
  • .right- Événement de clic droit
  • .middle- Événement de la molette de souris (bouton du milieu)
<!-- 阻止单击事件冒泡 -->
<a v-on:click.stop="doThis"></a>
<!-- 提交事件不再重载页面 -->
<form v-on:submit.prevent="onSubmit"></form>
<!-- 修饰符可以串联  -->
<a v-on:click.stop.prevent="doThat"></a>
<!-- 只有修饰符 -->
<form v-on:submit.prevent></form>
<!-- 添加事件侦听器时使用事件捕获模式 -->
<div v-on:click.capture="doThis">...</div>
<!-- 只当事件在该元素本身(而不是子元素)触发时触发回调 -->
<div v-on:click.self="doThat">...</div>

<!-- click 事件只能点击一次,2.1.4版本新增 -->
<a v-on:click.once="doThis"></a>

Modificateurs de touches

Vue permet d'ajouter des modificateurs de touches à v-on lors de l'écoute d'événements clavier :

<!-- 只有在 keyCode 是 13 时调用 vm.submit() -->
<input v-on:keyup.13="submit">

Se souvenir de tous les keyCodes est difficile, c'est pourquoi Vue fournit des alias pour les touches les plus couramment utilisées :

<!-- 同上 -->
<input v-on:keyup.enter="submit">
<!-- 缩写语法 -->
<input @keyup.enter="submit">

Tous les alias de touches :

  • .enter
  • .tab
  • .delete(Capture les touches 'Delete' et 'Backspace')
  • .esc
  • .space
  • .up
  • .down
  • .left
  • .right
  • .ctrl
  • .alt
  • .shift
  • .meta

Exemple

<p><!-- Alt + C -->
<input @keyup.alt.67="clear">
<!-- Ctrl + Click -->
<div @click.ctrl="doSomething">Do something</div>
Autres extensions