vue事件实现
Vue 事件实现方法
Vue 中事件处理主要通过 v-on 指令(或简写为 @)实现,用于监听 DOM 事件并执行对应的逻辑。以下是核心实现方式:
内联事件处理
直接在模板中调用方法或编写简单逻辑:
<button @click="count++">增加计数</button>
<button @click="showAlert('Hello')">弹出提示</button>
方法事件处理
在 methods 中定义方法并在模板中绑定:
<button @click="handleClick">点击触发</button>
methods: {
handleClick(event) {
console.log(event.target.tagName);
this.count += 1;
}
}
事件修饰符
Vue 提供修饰符简化事件处理:
.stop:阻止事件冒泡.prevent:阻止默认行为.capture:使用捕获模式.self:仅当事件从元素本身触发时生效.once:事件只触发一次.passive:提升滚动性能
示例:

<form @submit.prevent="onSubmit"></form>
<a @click.stop.prevent="doSomething"></a>
按键修饰符
监听特定按键事件:
<input @keyup.enter="submit" />
<input @keyup.page-down="onPageDown" />
系统修饰键
组合键触发事件:
<button @click.ctrl.exact="onCtrlClick">仅Ctrl+点击触发</button>
<input @keyup.alt.67="clearInput" />
自定义事件(子组件触发父组件)
子组件通过 $emit 触发事件:

// 子组件
this.$emit('custom-event', payload);
父组件监听:
<child-component @custom-event="handleCustomEvent" />
事件总线(跨组件通信)
创建全局事件中心:
// eventBus.js
import Vue from 'vue';
export const EventBus = new Vue();
组件A发送事件:
EventBus.$emit('update-data', data);
组件B接收事件:
EventBus.$on('update-data', data => {
console.log(data);
});
注意事项
- 事件方法应避免使用箭头函数,否则
this指向会出错 - 复杂逻辑建议拆分为独立方法
- 组件销毁前需用
EventBus.$off()移除监听器防止内存泄漏






