为了账号安全,请及时绑定邮箱和手机立即绑定

vue 组件通过bus通讯疑问

vue 组件通过bus通讯疑问

交互式爱情 2019-03-07 18:15:55
1.问题是否非父子非兄弟关系的组件不能通过bus通讯?请各位大佬赐教解疑这个问题的 目的是更深入理解bus 的过程产生的,请 不要说用vuex2.代码思路在路由中注册a组件,b组件在bus.js创建空的 Vue 实例作为事件总线访问a组件的页面: /aaa。然后点击按钮,通过bus派发事件在b组件中监听bus的自定义事件。但在a组件中派发事件后再访问b组件,b组件的监听函数未执行如没能看懂,拜托复制相关代码在本地跑下3.相关代码(基于vue-cli)组件a组件bbus.jsimport Vue from 'vue';export default new Vue()路由const aaa = () => import('@/components/zujian/bus/a')const bbb = () => import('@/components/zujian/bus/b')export default new Router({  routes: [{      path: '/aaa',      component: aaa    },    {      path: '/bbb',      component: bbb    }]})
查看完整描述

2 回答

?
慕村9548890

TA贡献1884条经验 获得超4个赞

其实了解一下底层原理就明白了,实际上就是运用了Vue内部的事件机制,可以参考Vue事件机制

emit做的事情就是从事件队列中找到对应的事件并执行,找不到则会丢弃,所以需要保证在此之前已经用on注册了事件。

题主这段代码组件B中的on还没执行过就已经调用了组件A的emit了。


查看完整回答
反对 回复 2019-03-09
?
饮歌长啸

TA贡献1951条经验 获得超3个赞

eventbus可以实现 非父子关系的组件之间的通信. 前提是两个组件都已经调用过mouted钩子.也就是a / b页面都进入(渲染)过.


查看完整回答
反对 回复 2019-03-09
  • 2 回答
  • 0 关注
  • 558 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信