亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

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 關注
  • 1889 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號