iT邦幫忙

1

(已解決)vue取的地理位置的經緯度寫入data之後 mounted()抓不到data的值

  • 分享至 

  • xImage
methods: {
async getLocation() {
      return new Promise((resolve, reject) => {
        navigator.geolocation.getCurrentPosition(position => {
          resolve(position);
        }, err =>{
          reject(err);
        })
      })
    },
    async locateMe() {
      try{
        this.location = await this.getLocation()
        console.log(this.location) //這裡有抓到值
      } catch(e) {
        console.log("error")
      }
    }
  }
},
  created() {
    this.locateMe()
  },
  mounted() {
    console.log(this.location) //這裡抓不到值
  }

但是寫在mounted()生命週期裡面抓不到值
https://ithelp.ithome.com.tw/upload/images/20220706/20149121gSQPXIz22i.png
請問如何才能在mounted()生命週期取得地理位置的經緯度

bendwarn iT邦新手 5 級 ‧ 2022-07-07 02:46:05 檢舉
看到71比60先log出來就算一種提示了
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

1 個回答

2
通靈亡
iT邦高手 1 級 ‧ 2022-07-06 16:27:19
最佳解答

這樣寫當然抓不到值,
原因是目前的寫法,不會等到你執行完 this.InitWnd() 就 console.log(this.location)

如果你要在 mounted() init 完後取得位置,mounted() 也要改 async/await
P.S. 你的 InitWnd 好像沒有在程式碼裡面,無法通靈。

async mounted() {
  await this.InitWnd()
  console.log(this.location)
}
jiun917 iT邦新手 5 級 ‧ 2022-07-06 16:49:11 檢舉

解決了,我把created()的抓取經緯度的function寫在mounted()之後,把mounted()改成async mounted(){await function()}就抓到資料了,感謝

我要發表回答

立即登入回答