iT邦幫忙

2021 iThome 鐵人賽

DAY 12
0
自我挑戰組

Vue.js 從零開始系列 第 12

Vue.js 從零開始:v-on

  • 分享至 

  • xImage
  •  

本篇來介紹 v-on 指令的特別之處,使用 JavaScript 撰寫一個事件處理,除了 DOM 的綁定還需要撰寫監聽事件,這邊只要加上 v-on , Vue.js 就都幫你處理好了,以下來介紹這特別的功能。


開始之前先來複習 JavaScriptaddEventListener() ,透過 addEventListener 註冊的 Event Handler (EventListener) 事件監聽器,就像是告訴JavaScript環境我在等待或監聽什麼事件,例如點擊滑鼠、按鍵盤...等,當發生事件時Browser就會去執行指定的function,這時 EventListener 會去建立一個事件物件 (Event Object),裡面包含了該事件有關的屬性,並以參數形式回傳給 EventListener

<button id="btn">Click</button>
let btn = document.getElementById('btn');
btn.addEventListener('click', function(e){
  console.log(e);
});

e就是事件物件,名稱可以自己定義,當點擊時觸發 EventListener , console.log 就會跳出很多屬性:
https://ithelp.ithome.com.tw/upload/images/20210922/20118347ge4pAd8vrt.png

v-on

將運算式直接寫在模板的實作:

<div id="app">
  <h3>{{ count }}</h3>
  <button @click="count++">Click</button>
</div>

v-on:事件名稱="運算式",等同於@事件名稱"="運算式",@是 v-on 縮寫,運算式可以直接寫在模板或是methods裡。

const vm = Vue.createApp({
  data() {
    return {
      count: 0,
    }
  }
});

vm.mount("#app");

先在 data 定義 count 為0,之後靠 v-on 改變 count 的值。

運算式寫在methods實作:

<div id="app">
  <h3>{{ count }}</h3>
  <button @click="add">Click</button>
</div>
const vm = Vue.createApp({
  data() {
    return {
      count: 0,
    }
  },
  methods: {
    add() {
      this.count++;
    }
  }
});

vm.mount("#app");

JavaScript 的 EventListener 事件監聽器,已經先在 methods宣告,再透過 v-on 綁定 click 的事件。

v-on 帶參數

https://ithelp.ithome.com.tw/upload/images/20210922/20118347jG4XEcLr2W.png
@事件名稱="functionName(參數, $event)"。

1.設定參數100。
2. num 接受100的參數,開始做運算,運算完再回傳到 data 裡的 count 再送回畫面。

需要訪問原始 DOM 事件時,再帶上特殊變量 $event就可以了,如果沒有參數,預設就會將 event 物件當參數傳入 methedsfunction(event)


Kuro Vue.js 1-5 事件處理
Kuro JavaScrip Day 15 隱藏在 "事件" 之中的秘密
Vue.js 官網


上一篇
Vue.js 從零開始:v-model
下一篇
Vue.js 從零開始:v-if,v-show
系列文
Vue.js 從零開始30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言