自學Vue必看的v-on知識總結

v-on基礎用法

(1)作用:綁定事件監聽器
(2)縮寫(語法糖):@
(3)預期:function 、Inline Statement、Object

基本用法示例

<body>
  <div id="app">
    <h2>{{count}}</h2>
    <button v-on:click="count--">-</button>
    // 使用方法 ,使用語法糖 
    <button @click='add()'>+</button>
  </div>
  
<script src="../vue.js"></script>
<script>
  var app = new Vue({
    el:'#app',
    data:{
      count:0
    },
    methods:{
      add() {
        this.count++;
      }
   }
  })
</script>
</body>

在這裏插入圖片描述

v-on參數

注意:
(1)如果該方法不需要額外的參數,那麼方法後的()可以不寫
但是注意:如果方法本身中就有一個參數,那麼會默認將原生事件event參數傳遞進去
(2)如果需要同時傳入某個參數,同時需要event時,可以通過 $event 傳入事件

v-on參數示例

具體細節註釋中都有提到

<body>
  <div id="app">
    //<!-- 1、事件調用的方法沒有參數 -->
    <button @click="btn1">按鈕一</button>
    <button @click='btn1()'>按鈕二</button> 
  
    //<!-- 2、在事件定義時,寫方法時省略了小括號,但是方法本身是需要一個參數的 
    //  這個時候Vue會默認地將瀏覽器生成地event事件對象作爲參數傳入到方法中
    <button @click="btn2(12)">按鈕三</button>
    //<!-- undefined -->
    <button @click="btn2()">按鈕四</button>   
    <button @click="btn2">按鈕五</button>
  
    //<!-- 3、在我們方法定義時,我們需要event對象,同時有需要其他參數-->
    //<!-- 不加小括號時,event事件對象會傳給第一個參數,而方法的第二個參數(本應是event事件對象)卻爲undefined -->
    <button @click="btn3">按鈕六</button>
    //<!-- 這裏會認爲event是一個變量,若沒有event變量會報錯 -->
    <button @click="btn3(12,event)">按鈕七</button>
   // <!-- 在調用方法時,使用$手動地獲取到瀏覽器的event事件對象 -->
    <button @click="btn3(12,$event)">按鈕八</button>
  </div> 
  
<script src="../vue.js"></script>
<script>
  var app = new Vue({
    el:'#app',
    data:{
      event:12
    },
    methods:{
      btn1() {
        console.log('我是按鈕一');        
      },
      btn2(a) {
        console.log(a);  
      },
      btn3(a,event) {
        console.log(a,event);        
      }
    }
  })
</script>
</body>

在這裏插入圖片描述
在這裏插入圖片描述

v-on參數修飾符

.stop修飾符的使用

.stop修飾符的使用 調用event.stopPropagation()
以下示例若不加 .stop 修飾符,將會出現點擊按鈕時也會

<body>
  <div id="app">
    //<!-- 阻止冒泡 -->
    
    <div @click='div'>
      <span>點我才觸發div點擊事件</span>
      <button @click.stop='btn'>按鈕</button>
    </div>  
  </div>

  
<script src="../vue.js"></script>
<script>
  var app = new Vue({
    el:'#app',
    methods:{
      btn() {
        console.log("btn");      
      },
      div() {
        console.log("div");       
      }
    }
  })

</script>
</body>

在這裏插入圖片描述

.prevent修飾符的使用

prevent修飾符的使用 調用event.preventDefault()

<body>
  <div id="app">
    <form action="baidu">
    // <!-- 阻止默認事件 -->
    <input type="submit" value="提交" @click.prevent="submit">
  </form> 
  </div>

  
<script src="../vue.js"></script>
<script>
  var app = new Vue({
    el:'#app',
    methods:{
      submit() {
        console.log("我提交了");  
      }
    }
  })

</script>
</body>

在這裏插入圖片描述

[keyCode(編碼)|keyAlias(簡寫)] 的使用

[keyCode(編碼)|keyAlias(簡寫)] 只當事件是從特定鍵觸發時才觸發回調

<body>
  <div id="app">
    <!--3 -->
    <input type="text" @keyup="keyUp">
    <input type="text" @keyup.enter="keyUp">
  </div>

  
<script src="../vue.js"></script>
<script>
  var app = new Vue({
    el:'#app',
    methods:{
      keyUp() {
        console.log("keyUp");  
      }
    }
  })

</script>
</body>

在這裏插入圖片描述

.once 的使用

.once 只觸發一次回調

<body>
  <div id="app">
    <button @click.once ='one'>只觸發一次</button>
  </div>
  
<script src="../vue.js"></script>
<script>
  var app = new Vue({
    el:'#app',
    methods:{
      one() {
        console.log("one");  
      }
    }
  })

</script>
</body>

在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章