简单来说,就是一个子组件通过$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代码大概如下:希望各位大佬指教一下,很简单的问题但是搞了好久appreciate。
1 回答
动漫人物
TA贡献1815条经验 获得超10个赞
你干脆安装一个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) => {
console.log(myData); // hello
});
添加回答
举报
0/150
提交
取消
