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

Vue2.0怎么在$on中更新data的数据啊

Vue2.0怎么在$on中更新data的数据啊

桃花长相依 2018-11-22 18:18:04
因为是非父子间的通信我按照网上的教程键了一个bus.js文件import Vue from 'vue'export default new Vue()第一个组件login.vue用来$emitthis.usermsg是一个对象 bus.$emit('usermessage', this.usermsg) this.$router.push({name: 'mine'})第一个组件mine.vue用来$emitdata() {  return {     userData: {},   } }, created() {   bus.$on('usermessage', (usermsg) => {    console.log(this.msg)    console.log(usermsg.name)    this.userData= usermsg       console.log('mine接收到的usermsg')    console.log(this.userData)   })      mounted() {  console.log(this.userData)   }userData的数据不会发现变化,赋值不生效。是不是this指向错了,还是不改这样赋值的,试了好多种方法了,一脸懵
查看完整描述

2 回答

?
牛魔王的故事

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

首先,你的mine.vue必须先初始化了,在on(′usermessage′)后,相关代码触发emit('usermessage'),才会接收到这个事件。按照你现在的代码,你在emit的时候,mine.vue根本就还没初始化,所以是监听不到这个事件的。
然后,你的this指向没错,因为你用了箭头函数,详情可以看下箭头函数的this指向问题。(虽然不知道你this.msg是想干啥,明明data里面没有msg)
另外你的思路是登录获取到用户信息后展示在mine.vue页面吧,建议你用vuex保存用户信息,这样就可以在其他页面拿到了

查看完整回答
反对 回复 2018-12-19
?
不错的小火鸡_0

TA贡献1条经验 获得超0个赞

要在外面定义一个变量来接受,data()里面的变量不那个接收

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

添加回答

举报

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