在Vue中,如何為元素添加點擊事件呢?
Vue提供了v-on指令,可以將一些常見的DOM事件綁定到Vue實例上。
<div v-on:click="handleClick">點擊我</div>
Vue實例中:
<script>
new Vue({
el: '#app',
methods: {
handleClick: function() {
console.log('點擊了元素');
}
}
})
</script>
上述代碼中,v-on:click綁定了一個叫做handleClick的函數,表示當元素被點擊時執行該函數。
除了v-on:click外,還有一些常見的綁定事件的方式,如:
- v-on:keyup:鍵盤按鍵松開時觸發
- v-on:submit:表單提交時觸發
- v-on:mouseover:鼠標移入時觸發
- ...
<input v-on:keyup="handleInput">
Vue實例中:
<script>
new Vue({
el: '#app',
methods: {
handleInput: function() {
console.log('輸入框鍵盤松開了');
}
}
})
</script>
除了綁定方法,v-on還可以傳遞參數,即事件對象。這個事件對象可以在處理函數中使用。
<button v-on:click="handleClick('hello', $event)">點擊我</button>
Vue實例中:
<script>
new Vue({
el: '#app',
methods: {
handleClick: function(greeting, event) {
console.log(greeting); // hello
console.log(event.target.tagName); // button
}
}
})
</script>
除了v-on,Vue還提供了一些快捷指令,如@click和@submit。
<div @click="handleClick">點擊我</div>
Vue實例中:
<script>
new Vue({
el: '#app',
methods: {
handleClick: function() {
console.log('點擊了元素');
}
}
})
</script>
上述代碼和v-on方式是等價的。
另外,由于v-on是比較常用的指令之一,Vue提供了縮寫語法@來代替v-on。
<div @click="handleClick">點擊我</div>
上述代碼和之前的代碼效果是一樣的。