vue实例实现事件接口
Vue 实例实现事件接口的方法
Vue 实例可以通过内置的事件系统实现组件间的通信或触发自定义行为。以下是几种常见的事件接口实现方式:
使用 $on 和 $emit
-
通过
$emit触发自定义事件,$on监听事件:
// 父组件监听 this.$on('custom-event', (payload) => { console.log('事件触发,数据:', payload); }); // 子组件触发 this.$emit('custom-event', { data: 'example' });
事件总线(Event Bus)
-
创建一个全局 Vue 实例作为事件中心,实现跨组件通信:

// 创建事件总线 const EventBus = new Vue(); // 组件A监听事件 EventBus.$on('update-data', (data) => { console.log('接收数据:', data); }); // 组件B触发事件 EventBus.$emit('update-data', { key: 'value' });
使用 v-on 监听子组件事件
- 在父组件模板中直接监听子组件触发的事件:
<child-component @custom-event="handleEvent"></child-component>methods: { handleEvent(payload) { console.log('子组件触发事件:', payload); } }
移除事件监听
- 避免内存泄漏,需在组件销毁前移除监听:
created() { this.$on('custom-event', this.handler); }, beforeDestroy() { this.$off('custom-event', this.handler); }
注意事项
- 事件名建议使用 kebab-case(如
my-event),因 HTML 不区分大小写。 - 复杂场景建议使用 Vuex 替代事件总线,避免难以维护的事件链。
通过以上方法,可以灵活实现 Vue 实例的事件接口,满足组件通信需求。





