在 Javascript 中會用 onclick, onchange...等方式監聽 DOM 物件,而 Vue 則是在 HTML 的標籤裡面加上 v-on 就可以做事件綁定,馬上來練習該怎麼使用吧。
同樣的,先寫一段 JS 範例,下面不再重複撰寫
const vm = Vue.createApp({
data () {
return {
num: 0,
text: '',
}
},
methods: {
addOne () {
this.num++;
},
changeNum(n) {
this.num = n;
}
}
}).mount('#app');
Vue 的事件綁定寫法是在 HTML 標籤裡面加上 v-on:使用者行為="執行程式"
,可以直接寫程式碼,或是呼叫函式;除此之外,v-on:
也能簡寫成一個 @
,非常簡潔方便:
直接在標籤內執行程式碼。
<p>一共點了 {{ num }} 下</p>
<button v-on:click="num++"></button>
呼叫函式。
<p>一共點了 {{ num }} 下</p>
<button v-on:click="addOne"></button>
簡寫方式
<p>一共點了 {{ num }} 下</p>
<button @click="addOne"></button>
在處理事件時,時常會用到 preventDefault, stopPropagation...等等方法,Vue 提供了修飾子快速達成需要的功能。
<div @click="changeNum(1)">
<p>num: {{ num }} </p>
<div @click.stop="changeNum(2)">show 2</div>
</div>
<a href="#" @click.prevent="text='prevent'">Prevent</a>
<p>{{text}}</p>
<div @click.capture="changeNum(1)">
<div @click="changeNum(2)">
<div @click="changeNum(3)">clickMe!</div>
</div>
</div>
<p>{{num}}</p>
<!-- alt + C -->
<imput @keyup.alt.67="clear">
.exact
,這樣只有在按下一樣的按鍵(或組合)的時候才會觸發。滑鼠相對簡單多