這篇文章主要講解了解決vue+vant使用圖片預(yù)覽功能ImagePreview的問題,內(nèi)容清晰明了,對此有興趣的小伙伴可以學(xué)習(xí)一下,相信大家閱讀完之后會有幫助。

如果您搜到這篇文章的話,那員外估計您遇到跟我一樣的問題了,即在打開圖片預(yù)覽功能后,如果不關(guān)閉預(yù)覽的圖片,同時改變路由的話,會發(fā)現(xiàn)即使路由改變了,預(yù)覽的圖片還在文檔的最頂層顯示,如圖:

著實讓員外百思不其解,在調(diào)用vant 的 ImagePreview圖片預(yù)覽組件中,沒有html,有的只是引入ImagePreview 和js的調(diào)用。在這種情況下,員外是想自己添加任何方法都沒法實現(xiàn)的,同時想在離開路由時的beforeRouteLeave 鉤子中關(guān)閉這個 ImagePreview 也實現(xiàn)不了,因為根本就拿他沒有一點辦法。同時可以看到,這個圖片預(yù)覽的 html 是掛載在 window 上面的,實在是太 難為初學(xué)者了。
#第一種解決辦法
后來多方請教,終于請到一位大佬,為員外指點迷津。 1. 首先需要定義兩個實際變量,instance_before 和 instance_after,之所以是兩個是因為在這個頁面有兩個 tab 里面的圖片需要預(yù)覽; 2. 然后把兩個 ImagePreview[] 分別賦值給instance_before 和 instance_after,測試一下圖片是否能正常打開關(guān)閉,結(jié)果當(dāng)然是可以的; 3. 然后在 beforeRouteLeave 鉤子中調(diào)用 close() 方法關(guān)閉預(yù)覽遮罩。 其實這個問題主要還是單頁只有一個vue實例,然后在調(diào)用 ImagePreview[] 的時候頁面在返回上一個路由或前進到下一個路由,其產(chǎn)生的DOM節(jié)點還存在頁面中,所以要做的是在當(dāng)前路由跳轉(zhuǎn)的時候及時移除或者隱藏這個DOM節(jié)點。
代碼:
import {ImagePreview} from 'vant';
export default {
data() {
return {
active_:'', //切換 tab 所對應(yīng)的狀態(tài)數(shù)字
instance_before:'',
instance_after:'',
}
},
//在路由離開的時候,關(guān)閉預(yù)覽的圖片
beforeRouteLeave(to,from,next){
if(this.active_ == 0){
this.instance_before.close();
}else{
this.instance_after.close();
}
next();
},
methods: {
//查看圖片
show_before_img(){
this.instance_before = ImagePreview({
images: [this.warsher_brfore],
});
},
show_after_img(){
this.instance_after = ImagePreview({
images: [this.warsher_after],
});
},
}
} 另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機、免備案服務(wù)器”等云主機租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務(wù)可用性高、性價比高”等特點與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場景需求。
當(dāng)前標(biāo)題:解決vue+vant使用圖片預(yù)覽功能ImagePreview的問題-創(chuàng)新互聯(lián)
分享URL:http://chinadenli.net/article6/hjjog.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供建站公司、網(wǎng)站維護、App設(shè)計、電子商務(wù)、品牌網(wǎng)站建設(shè)、網(wǎng)站策劃
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容