bus在两个组件之间通信,第一次不触发要如何解决?

一个界面中的两个公共组件之间需要通信,采用了bus的方法,但是发现第一次不触发

传递数据的组件(组件一):

clipboard.png

接收数据的组件(组件二):

clipboard.png

【操作流程】:在组件一的input中修改信息,@change触发bus发送数据;在组件二中点击按钮,接收bus发送过来的数据,并将数据入库。

【问题】:在第一次点击保存按钮的时候,没有接收到bus发送过来的数据,这个要怎么解决?
【描述】:在百度上找了很多方法,说是在组件一的beforeDestory中触发bus发送数据,但是这样的话,每次都要关闭这个界面才能获取到数据,完全不符合我的需求。
各位大神,请问下要如何解决这个问题?

阅读 3.4k
1 个回答

至于首次未触发,主要还是页面未创建的时候,按钮已经发出了消息,页面当然接收不到了
在组件二中采用beforeCreate来获取bus的数据就可以解决了。代码如下:

    beforeCreate(){
        Bus.$on('modify', (e) => {
            console.log('e---<',e);
            this.name = e.name;
            this.value = e.value
        })
    },
    beforeDestroy() {
        Bus.$off('modify');
    },
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题