1. 程式人生 > 實用技巧 >VueJS 事件修飾符

VueJS 事件修飾符

事件修飾符

在事件處理程式中呼叫event.preventDefault()event.stopPropagation()是非常常見的需求。儘管我們可以在 methods 中輕鬆實現這點,但更好的方式是:methods 只有純粹的資料邏輯,而不是去處理 DOM 事件細節。

為了解決這個問題, Vue.js 為v-on提供了事件修飾符。通過由點(.)表示的指令字尾來呼叫修飾符。

  • .stop
  • .prevent
  • .capture
  • .self
  • .once
<!-- 阻止單擊事件冒泡 -->
<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>

按鍵修飾符

在監聽鍵盤事件時,我們經常需要監測常見的鍵值。 Vue 允許為v-on在監聽鍵盤事件時新增按鍵修飾符:

<!-- 只有在 keyCode 是 13 時呼叫 vm.submit() -->
<input v-on:keyup.13="submit">

<!-- 同上 -->
<input v-on:keyup.enter="submit">
 
<!-- 縮寫語法 -->
<input @keyup.enter="submit">


全部的按鍵別名:記住所有的 keyCode 比較困難,所以 Vue 為最常用的按鍵提供了別名:

  • .enter
  • .tab
  • .delete(捕獲 “刪除” 和 “退格” 鍵)
  • .esc
  • .space
  • .up
  • .down
  • .left
  • .right

可以通過全域性config.keyCodes物件自定義按鍵修飾符別名

// 可以使用 v-on:keyup.f1
Vue.config.keyCodes.f1 = 112