ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

vue 事件中央总线

2022-08-16 13:30:18  阅读:199  来源: 互联网

标签:vue bus 总线 js Vue 事件 监听 传值 pubsub


vue 事件中央总线

作用: 实现任意组件间的通信

实现的方法: 有以下两种方式

方式1: 全局事件总线
1.在main.js文件中定义
new Vue({ el: '#app', router, store, render: h => h(App), beforeCreate(){ Vue.prototype.$bus = this } })
2.使用方法
this.$bus.$emit('定义名称',值) // 监听数据 (在mounted监听数据) this.$bus.$on('定义名称' val=>{}) // 销毁(在beforeDestroy销毁) this.$bus.$off('定义名称')

方式2:
1.在main.js的同级建一个bus.js
import Vue from "vue" export default new Vue
2.在main.js引入
// 事件中央总线传值 Vue.prototype.bus = new Vue();
3.使用方法
`// 1.引入(传值和监听数据部分都需引入bus.js文件)
import Bus from '@bus.js'

// 传值(我是在beforeDestroy中传值的)
Bus.$emit('定义名称',值)

// 监听数据 (我在beforeCreate 中监听数据)
Bus.$on('定义名称',val=>{})

//销毁(在监听数据页面的 beforeDestroy 中销毁)
Bus.$off('定义名称')
扩展: 还可以使用消息订阅与发布的方式 实现任意组件间的传值// 下载插件 pubsub-js
npm i pubsub-js --save

// 在需要传和监听的页面引入
import pubsub from 'pubsub-js'

// 发布(传值)
pubsub.publish('xxx',值)

// 订阅(接收)
this.pubId = pubsub.subscribe('xxx',(msgName,data)=>{
// 注意 msgName的值为你定义的 xxx data为你真正传过来的 值
})

// 销毁 (在beforeDestroy)
pubsub.unsubscribe(this.pubId)
`

标签:vue,bus,总线,js,Vue,事件,监听,传值,pubsub
来源: https://www.cnblogs.com/young-people/p/16591221.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有