基本使用
eventBus适用于兄弟组件之间传值。因为是小型项目,不需要使用上vuex,于是考虑使用eventBus进行兄弟组件之间传值。
步骤:
-
创建bus.js文件,可以放在工具类目录下,实质是创建一个Vue实例充当eventBus。
import Vue from 'vue' export const bus = new Vue()
-
在发送数据的组件调用$emit方法去发送数据。
import {bus} from "../../utils/bus.js" // 这里自己修改路径,且bus.js文件中导出的是export所以使用import {bus} ... // 发送数据 bus.$emit(参数1:'定义一个方法名', 参数2:'要发送的数据')
-
接收数据的组件中调用$on方法监听
import {bus} from "../../../utils/bus.js" ... // 接收数据 bus.$on(参数1:'$emit的方法名', 参数2:'function(value){ // value是接收到的数据 }')
-
最后还可以移除下eventBus
eventBus.$off('方法名', {})
场景、坑点及原因
因为接收数据界面使用的懒加载,所有当发送数据页面调用接口获取到数据后,才会去使用$emit
发送数据,然后跳转到接收数据界面。
所以$emit
先于$on
执行了,导致$on
没有正确监听到。
解决方法:
-
不要使用懒加载
-
发送数据的时候存储在vue实例中,跳转到接收数据界面再取出来
具体实现如下:
``` import Vue from 'vue' export const Bus = new Vue({ data () { return { // 定义数据 data: {} } }, created () { // 绑定监听 this.$on('getInfo', value => { this.data = value }) } }) ```
import {bus} from "../../utils/bus.js" ... // 发送数据 bus.$emit(参数1:'定义一个方法名', 参数2:'要发送的数据')
import {bus} from "../../utils/bus.js" computed: { records () { return bus.data } },
参考链接:
blog.csdn.net/qq_36490598…
常见问题FAQ
- 免费下载或者VIP会员专享资源能否直接商用?
- 本站所有资源版权均属于原作者所有,这里所提供资源均只能用于参考学习用,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用者承担。更多说明请参考 VIP介绍。
- 提示下载完但解压或打开不了?
- 找不到素材资源介绍文章里的示例图片?
- 模板不会安装或需要功能定制以及二次开发?
发表评论
还没有评论,快来抢沙发吧!