vue 实现全局监听
时间: 2023-09-08 19:08:36 浏览: 136
要在Vue中实现全局监听,你可以使用Vue的自定义事件机制。以下是一种实现方法:
1. 创建一个空的Vue实例,作为事件总线:
```javascript
// eventBus.js
import Vue from 'vue'
export const eventBus = new Vue()
```
2. 在需要监听的组件中,使用`$emit`方法触发自定义事件:
```javascript
// ComponentA.vue
import { eventBus } from '@/eventBus.js'
export default {
methods: {
someMethod() {
// 触发自定义事件
eventBus.$emit('customEvent', data)
}
}
}
```
3. 在需要接收事件的组件中,使用`$on`方法监听自定义事件:
```javascript
// ComponentB.vue
import { eventBus } from '@/eventBus.js'
export default {
created() {
// 监听自定义事件
eventBus.$on('customEvent', this.handleCustomEvent)
},
destroyed() {
// 组件销毁时取消监听
eventBus.$off('customEvent', this.handleCustomEvent)
},
methods: {
handleCustomEvent(data) {
// 处理接收到的事件
console.log(data)
}
}
}
```
通过以上步骤,你就可以在Vue中实现全局监听了。在ComponentA中触发自定义事件后,ComponentB就能接收到该事件并执行相应的处理函数。注意要在适当的生命周期钩子函数中添加和移除事件监听,以避免内存泄漏。
阅读全文