Vue 事件監聽 v-on


事件監聽

v-on介紹

  • 在前端開發中,我們需要經常和用於交互。這個時候,我們就必須監聽用戶發生的時間,比如點擊、拖拽、鍵盤事件等等

  • 在Vue中如何監聽事件呢?使用v-on指令

  • 作用:綁定事件監聽器

  • 縮寫:語法糖 @

  • 預期:Function | Inline Statement | Object

  • 參數:event

v-on基礎

  • 我們用一個監聽按鈕的點擊事件,來簡單看看v-on的使用
  • 下面的代碼中,我們使用了v-on:click="counter++”
  • 另外,我們可以將事件指向一個在methods中定義的函數
<div id="app">
  <h2>{{counter}}</h2>
  <button v-on:click="counter++">點擊按鈕1</button>
  <button v-on:click="btnClick()">點擊按鈕2</button>
</div>

<script src="../../js/vue.js"></script>
<script>
  const app = new Vue({
    el: '#app',
    data: {
      counter: 0
    },
    methods: {
      btnClick() {
        this.counter++
      }
    }
  })
</script>

v-on也有對應的語法糖:v-on:click可以寫成@click

  <button v-on:click="counter++">點擊按鈕1</button>
  <button v-on:click="btnClick()">點擊按鈕2</button>
 <!--語法糖-->
  <button @click="counter++">點擊按鈕3</button>
  <button @click="btnClick()">點擊按鈕4</button>

v-on參數

當通過methods中定義方法,以供@click調用時,需要注意參數問題:

  • 情況一:如果該方法不需要額外參數,那么方法后的()可以不添加。
    • 但是注意:如果方法本身中有一個參數,那么會默認將原生事件event參數傳遞進去
  • 情況二:如果需要同時傳入某個參數,同時需要event時,可以通過$event傳入事件。

<div id="app">
  <h2>點擊次數: {{counter}}</h2>
  <!--情況一: 方法沒有參數-->
  <button @click="btnClick1">按鈕1</button>
  <button @click="btnClick1()">按鈕1</button>

  <!--情況二: 如果方法有參數-->
  <!--1.調用時不傳入參數,會默認將event作為第一個參數傳入-->
  <button @click="btnClick2">按鈕2</button>
  <!--2.調用時不傳入參數,那么參數為undefined-->
  <button @click="btnClick2()">按鈕2</button>

  <!--情況三: 如果方法有參數,並且希望傳入event-->
  <button @click="btnClick3(10, $event)">按鈕3</button>
</div>

<script src="../../js/vue.js"></script>
<script>
  const app = new Vue({
    el: '#app',
    data: {
      counter: 0
    },
    methods: {
      btnClick1() {
        console.log('按鈕1被點擊');
      },
      btnClick2(payload) {
        console.log('按鈕2被點擊', payload);
      },
      btnClick3(num, event) {
        console.log('按鈕3被點擊', num, event);
      }
    }
  })
</script>

v-on修飾符

在某些情況下,我們拿到event的目的可能是進行一些事件處理。Vue提供了修飾符來幫助我們方便的處理一些事件:

  • .stop - 調用 event.stopPropagation()
  • .prevent - 調用 event.preventDefault()
  • .{keyCode | keyAlias} - 只當事件是從特定鍵觸發時才觸發回調
  • .native - 監聽組件根元素的原生事件
  • .once - 只觸發一次回調
<!-- 停止冒泡 -->
<button @clcik.stop="doThis"></button>

<!-- 阻止默認行為 -->
<button @click.prevent="doThis"></button>

<!-- 阻止默認行為 -->
<form @submit.prevent></form>

<!-- 串聯修飾符 -->
<button @click.stop.prevent="doThis"></button>

<!-- 鍵修飾符,鍵別名 -->
<input @keyup.enter="onEnter">

<!-- 鍵修飾符,鍵代碼 -->
<input @keyup.13="onEnter">

<!-- 點擊回調只回調一次 -->
<button @click.once="doThis"></button>

擴展:事件

事件監聽機制

概念:某些組件被執行了某些操作后,觸發某些代碼的執行。

事件:某些操作。如: 單擊,雙擊,鍵盤按下了,鼠標移動了。

事件源:組件。如: 按鈕 文本輸入框...

監聽器:JavaScript代碼。

注冊監聽:將事件,事件源,監聽器結合在一起。當事件源上發生了某個事件,則觸發執行某個監聽器代碼。

常見的事件

  • 點擊事件

    • onclick:單擊事件
    • ondblclick:雙擊事件
  • 焦點事件

    • onblur:失去焦點
    • onfocus: 元素獲得焦點。
  • 加載事件

    • onload:一張頁面或一幅圖像完成加載。
  • 鼠標事件

    • onmousedown 鼠標按鈕被按下。
    • onmouseup 鼠標按鍵被松開。
    • onmousemove 鼠標被移動。
    • onmouseover 鼠標移到某元素之上。
    • onmouseout 鼠標從某元素移開。
  • 鍵盤事件

    • onkeydown 某個鍵盤按鍵被按下。
    • onkeyup 某個鍵盤按鍵被松開。
    • onkeypress 某個鍵盤按鍵被按下並松開。
    • 選擇和改變
    • onchange 域的內容被改變。
    • onselect 文本被選中。
  • 表單事件

    • onsubmit 確認按鈕被點擊。
    • onreset 重置按鈕被點擊。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM