背景:
APP啟動(dòng)時(shí)會(huì)預(yù)加載web頁面酌呆,web頁面依賴APP的相關(guān)權(quán)限數(shù)據(jù)(例如APP定位坐標(biāo))
場(chǎng)景:
1.首次進(jìn)入APP衡载,用戶拒絕授權(quán)定位或者手機(jī)定位不開啟,這時(shí)web頁面已經(jīng)被預(yù)加載隙袁,例如地址:
https://www.baidu.com/index.html#/
但獲取不到定位坐標(biāo)痰娱,web頁面默認(rèn)會(huì)加載北京的數(shù)據(jù)。
2.用戶開啟手機(jī)定位菩收,APP獲取到經(jīng)緯度梨睁,重新加載一次Web頁面,此時(shí)的url可能是這樣的
https://www.baidu.com/index.html#/?lat=143.232232&lon=32.234432
問題:
此時(shí)的webview頁面并沒有重新加載娜饵,還是首次加載的北京的數(shù)據(jù)坡贺。
解決方案:
1.利用watch監(jiān)聽router中query的變化
watch: {
'$route' (to, from) { //監(jiān)聽路由是否變化
if(to.query.lat != from.query.lat){
this.loadData();//重新加載數(shù)據(jù)
}
}
}
參考Vue Router響應(yīng)路由參數(shù)的變化一節(jié)
原理
在回顧下我們的場(chǎng)景,APP加載的一直是https://www.baidu.com/index.html#/這個(gè)地址箱舞,只是后邊追加的參數(shù)不同遍坟,再回想下vue單頁面路由的原理,只有訪問到對(duì)應(yīng)的路由才會(huì)觸發(fā)對(duì)應(yīng)的頁面加載(當(dāng)前路由和要跳轉(zhuǎn)的路由對(duì)應(yīng)同一個(gè)組件時(shí)褐缠,組件不會(huì)被更新政鼠,生命周期不會(huì)被執(zhí)行),才會(huì)觸發(fā)頁面中的vue的生命周期队魏,所以公般,可以利用watch來監(jiān)聽路由參數(shù)的變化万搔。