使用EventBus(事件总线),vue.$bus.on和emit方法。
时间: 2024-11-12 21:34:30 浏览: 5
EventBus是一种常见的前端应用架构模式,它允许组件之间通过发送和接收自定义事件来进行松散耦合的通信。在Vue.js中,`vue.$bus`通常是一个全局单例的Vue实例,用于在各组件间传递消息。
`vue.$bus.on`方法是用来订阅特定事件的,它的语法通常是这样的:
```javascript
this.$bus.on('eventName', callbackFunction);
```
这里的`eventName`是你想要监听的事件名称,而`callbackFunction`是在接收到该事件时要执行的回调函数。
`vue.$bus.emit`方法则是用来发布事件的,其基本用法如下:
```javascript
this.$bus.emit('eventName', arguments...);
```
这会触发名为`eventName`的事件,并将额外的参数传给所有订阅这个事件的回调函数。
例如,假设有一个父组件需要通知子组件更新数据,可以这样做:
```javascript
// 父组件
this.$bus.emit('updateData', newData);
// 子组件
mounted() {
this.$bus.on('updateData', (data) => {
this.myData = data;
});
}
```
相关问题
this.$bus.$emit
这是 Vue.js 中使用 EventBus (事件总线) 实现组件间通信的方式之一。`$bus` 是在 Vue 根实例中创建的 EventBus 对象,通过 `$emit` 方法可以向所有监听该事件的组件广播消息。
例如,假设我们在组件 A 中需要向组件 B 发送消息,可以在组件 A 中使用 `$bus.$emit('event-name', data)` 发送消息,然后在组件 B 中使用 `$bus.$on('event-name', (data) => { // do something with data })` 监听该事件并处理接收到的消息。
需要注意的是,使用 EventBus 可能会导致组件之间的耦合度增加,建议在必要的情况下使用,避免滥用。
eventbus.$emit
在给定的引用中,和提供了关于eventbus.$emit的信息。根据这些引用,eventbus.$emit是一个用于在Vue应用程序中发送事件的方法。它可以在Vue实例中调用,通过传递事件名称和需要传递的数据来触发事件。例如,在中,当点击按钮时,可以调用eventbus.$emit("aMsg", this.MsgA)来发送名为"aMsg"的事件,并携带A组件中的Msg数据。这样,其他组件可以通过监听该事件来接收并处理相应的数据。<span class="em">1</span><span class="em">2</span><span class="em">3</span>
#### 引用[.reference_title]
- *1* [解决vue bus.$emit触发第一次$on监听不到问题](https://download.csdn.net/download/weixin_38648968/13128030)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"]
- *2* *3* [vue事件总线EventBus(兄弟组件之间的传值)](https://blog.csdn.net/qq_53061847/article/details/126835232)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"]
[ .reference_list ]
阅读全文