Vue中還有一個很重要的指令就是事件綁定v-on,讓DOM可以去做更多的事情。
使用的方式為v-on:[事件名稱]="運算式"
,像count++較簡短的運算可以直接寫,而比較複雜的運算式可以使用methods
處理,給予一個事件名稱做綁定。
<div id="app">
<p>count : {{count}}</p>
<button v-on:click="count++">add</button>
<button v-on:click="add">add</button>
</div>
const vm = Vue.createApp({
data() {
return {
count: 0,
}
},
methods: {
add() {
this.count++
}
}
}).mount('#app');
若需要傳入參數可以用$event
帶入,就像範例中input改數字後會傳入methods
的add(amount,event)
,再次按下add按鈕就會count+5,改變了原本的count+1。
<div id="app">
<p>count : {{count}}</p>
<input v-model.number="amount"></input>
<button v-on:click="add(amount,$event)">add</button>
</div>
const vm = Vue.createApp({
data() {
return {
count: 0,
amount: 1
}
},
methods: {
add(amount, event) {
this.count += amount
console.log(event.target.tagName, amount)
}
}
}).mount('#app');
event.stopPropagation()
,click事件不會向外層傳遞event.preventDefault()
,阻擋元素預設行為event.preventDefault()
@keyup.enter
<!--ctrl+任何按鈕都會觸發-->
<button v-on:click.ctrl="onClick">A</button>
<!--只有ctrl才會觸發-->
<button v-on:click.ctrl.exact="onCtrlClick">A</button>
監聽事件
https://cn.vuejs.org/v2/guide/events.html#按键码