嘿,朋友们!今天咱们来聊点让网页“动起来”的魔法——Vue的事件处理。别被“事件”这词吓到,说白了就是:当用户做了某个动作(比如点击、输入),你的网页该怎么回应?就像你按开关灯会亮,拖进度条视频会跳转,这些全是事件处理的功劳!
在Vue里,处理事件简单到像在点菜:你想响应点击?用@click!想监听输入?用@input!但如果你只停留在“点一下变个颜色”,那可亏大了。Vue的事件系统里藏着一堆宝藏工具,今天我就带你挖个遍!
一、基础入门:从“点一下”开始
先来看最简单的点击事件。假设你有个按钮,点一下就要计数加一,用Vue实现只需几行代码:
<template>
<div>
<button @click="count++">你点了我 {
{ count }} 次!</button>
</div>
</template>
<script>
export default {
data() {
return {
count: 0
}
}
}
</script>
瞧见没?那个@click="count++"就是Vue的事件监听器。@click是v-on:click的简写(是的,Vue体贴到连打字都帮你省了)。当按钮被点击,它直接执行count++,数据一变,页面自动更新——这就是Vue的响应式魅力!
但实际开发中,我们通常会把复杂逻辑放到方法里:
<template>
<div>
<button @click="addCount">点我加1</button>
<p>计数:{
{ count }}</p>
</div>
</template>
<script>
export default {
data() {
return {
count: 0
}
},
methods: {
addCount() {
this.count++
console.log(`当前计数:${this.count}`)
}
}
}
</script>
这里把点击事件绑定到addCount方法。注意:方法不要加括号!除非你需要传递参数(后面会讲)。保持这个好习惯,能避免很多莫名奇妙的bug。
二、事件修饰符:Vue的“贴心小道具”
现在来点进阶内容。假设你有个弹出框,点击按钮打开,点击框外关闭。你会怎么写?传统JS可能要写一堆事件冒泡代码,但在Vue里,几个修饰符就能搞定!
1. 阻止事件冒泡:.stop
事件冒泡是什么?就像你往水里扔石头,波纹会从中心扩散到整个水面。在网页里,点击子元素,事件会向上传递给父元素。有时候这很烦人,比如:
<template>
<div @click="parentClick">
父元素
<button @click="childClick">子按钮</button>
</div>
</template>
<script>
export default {
methods: {
parentClick() {
alert('父元素被点击了!')
},
childClick() {
alert('子按钮被点击了!')
}
}
}
</script>
点击子按钮时,两个alert都会弹出来!要阻止这种情况,只需在子按钮上加.stop:
<button @click.stop="childClick">子按钮</button>
现在点击按钮,只有子按钮的事件会触发。就像给事件装了“隔离罩”,让它不会向外扩散。

最低0.47元/天 解锁文章
1456

被折叠的 条评论
为什么被折叠?



