vue两个子组件之间如何不用vuex进行简单的通信?

简单来说,就是一个子组件通过$emit来传一个object到父组件,但是父组件接收不到参数 

比如一个简单的单页面应用,app.vue 文件里面通过 vue-router 引入了 a组件 和 b组件

代码大概如下


<div class='app'>

    <div class='nav'>

        <router-link to='/a'>前往a页面</router-link>

        <router-link to='/b'>前往b页面</router-link>

    </div>

    <div class='content'>

        <router-view></router-view>

    </div>    

</div>    

然后,现在点击 a组件 里面的一个按钮之后,

把一个对象传到 b组件 (不用vuex)

我的想法就是,点击了a组件的button之后,this.$emit一个事件,

然后把对象做为参数,一起传到app.vue , 

然后在app.vue 通过监听事件获取到 a组件 传来的事件和参数

然后 我试了一下在分别在app.vue的 .content 和 router-view 用v-on 来接收事件

发现在router-view能够成功接收到a组件传来的事件

然后试着console一下接收到的参数

发现输出undefined

代码大概如下:

https://img3.mukewang.com/5c6e4c3a0001903605900386.jpg

希望各位大佬指教一下,很简单的问题但是搞了好久
appreciate。

湖上湖
浏览 536回答 1
1回答

动漫人物

你干脆安装一个vue-bus插件吧npm install vue-bus入口文件引入一下import Vue from 'vue';import VueBus from 'vue-bus';Vue.use(VueBus);A组件:this.$bus.emit('myEvent', 'hello'); // 触发自定义事件传递数据B组件:this.$bus.on('myEvent', (myData) => {&nbsp; &nbsp; console.log(myData); // hello});&nbsp;
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript