最近進(jìn)行小程序開(kāi)發(fā),因?yàn)橹黧w上是復(fù)用了公眾號(hào)的內(nèi)容纵菌,所有采用了Web-View加載H5的方式進(jìn)行阐污,其中有一個(gè)需求是連接藍(lán)牙設(shè)備收集數(shù)據(jù)并上傳到后臺(tái),點(diǎn)擊H5中的按鈕咱圆,進(jìn)入到藍(lán)牙采集頁(yè)面笛辟,然后在采集完數(shù)據(jù)后,跳回H5頁(yè)面并刷新序苏。
在H5中調(diào)用wx.miniProgram.navigateTo調(diào)到了小程序頁(yè)面手幢,然后采集完數(shù)據(jù),最開(kāi)始想到的是使用reLaunch重新加載H5頁(yè)面,但是由于小程序新開(kāi)page并加載H5的速度并不快,總感覺(jué)這個(gè)頁(yè)面過(guò)渡時(shí)間長(zhǎng)婶恼。于是想著能否直接navigateBack返回溯壶,然后刷新H5頁(yè)面。
data{
bindUrl: "http://itlao5.com/wp";
}
首先舱禽,我的Web-View是動(dòng)態(tài)加載的,通過(guò)setData改變bindUrl值來(lái)刷新頁(yè)面,然而胀蛮,我返回繼續(xù)調(diào)用setData方法,發(fā)現(xiàn)并沒(méi)有刷新頁(yè)面糯钙。因?yàn)閟etData的bindUrl值并沒(méi)有變化粪狼,Web-View不刷新退腥。于是想了一個(gè)辦法,bindUrl加參數(shù)變成“http://itlao5.com/wp?flag=1”再榄,這樣bindUrl變了狡刘,Web-View就會(huì)刷新。
重新運(yùn)行不跟,Web-View確實(shí)刷新了颓帝,然而,當(dāng)我按返回鍵時(shí)窝革,問(wèn)題出現(xiàn)了:按一下返回鍵购城,并沒(méi)有退出,按第二下才退出小程序虐译,原因竟然是我加載了兩個(gè)Url瘪板,按第一下返回鍵時(shí),只是Web-View退回了“http://itlao5.com/wp”漆诽。
于是又得想其他辦法侮攀,既然bindUrl值改變會(huì)刷新Web-View,那我將bindUrl置為空字符串""厢拭,然后再setData為“http://itlao5.com/wp”兰英,是否能解決問(wèn)題呢?
即:
this.setData {
bindUrl: ''
}
this.setData {
bindUrl: 'http://itlao5.com/wp'
}
最后供鸠,在藍(lán)牙采集頁(yè)把bindUrl先修改畦贸,再返回,然后楞捂,代碼就定格在下面的樣子:
goBck: function() {
var pages = getCurrentPages(); // 當(dāng)前頁(yè)面
var beforePage = pages[pages.length - 2]; // 前一個(gè)頁(yè)面
var url = beforePage.data.bindUrl; // 前一個(gè)頁(yè)面當(dāng)前加載的url
beforePage.setData {
bindUrl: ''
}
beforePage.setData {
bindUrl: url;
}
// 兩次setData薄坏,達(dá)到刷新bindUrl的目的
wx.navigateBack({
success: function() {
// 返回前一個(gè)頁(yè)面成功
}
});
}
這算是一種取巧的方式,但是寨闹,目的達(dá)到了胶坠,省略了page頁(yè)的重新加載,同時(shí)也達(dá)到了H5刷新的目的繁堡,而且不會(huì)影響到返回隊(duì)列沈善。最主要的是,刷新速度快帖蔓。
因?yàn)榈谝淮螌懶〕绦虬粒琷s也不太懂,只有邊學(xué)習(xí)邊開(kāi)發(fā)塑娇。該問(wèn)題如果有更好的澈侠,更專業(yè)的方式解決,麻煩指教埋酬,多謝哨啃!
作者:ThinkinLiu
鏈接:微信小程序-Web-View刷新Html頁(yè)面-教程-小程序社區(qū)-微信小程序-微信小程序開(kāi)發(fā)社區(qū)-小程序開(kāi)發(fā)論壇-微信小程序聯(lián)盟
著作權(quán)歸作者所有烧栋。商業(yè)轉(zhuǎn)載請(qǐng)聯(lián)系作者獲得授權(quán),非商業(yè)轉(zhuǎn)載請(qǐng)注明出處拳球。