解決Vue使用swiper動(dòng)態(tài)加載數(shù)據(jù),動(dòng)態(tài)輪播數(shù)據(jù)顯示白屏的問題
Vue使用swiper插件時(shí)特別是輪播元素含有動(dòng)態(tài)數(shù)據(jù)時(shí)可能會(huì)出現(xiàn)數(shù)據(jù)為空或者白屏的問題
使用下面的方法可以解決(保證在數(shù)據(jù)請(qǐng)求之后再渲染頁面)
頁面結(jié)構(gòu)
<div class="swiper-container"> <div class="swiper-wrapper"> <div class="swiper-slide tpOne" v-if="topInfo"> <-- 此處為綁定數(shù)據(jù)的輪播元素 --> <div class="bannerBox1"> <div class="l_label" >{{topInfo.label}}</div> <div class="l_title" >{{topInfo.title}}</div> <div class="l_tips" >{{topInfo.tips}}</div> <div class="l_bottom"><span><img src="..." alt=""></span>{{topInfo.bottom}}</div> </div> </div> <div class="swiper-slide"><img src="" alt="" /></div> <div class="swiper-slide"><img src="" alt="" /></div> <div class="swiper-slide"><img src="" alt="" /></div> </div> <div class="swiper-pagination"></div> </div>
初始化方法
//mounted 或者topInfo的值獲取到時(shí)再調(diào)用初始化方法 swiperInit() { var mySwiper = new Swiper('.swiper-container', { pagination : '.swiper-pagination', paginationType : 'bullets', autoplay : 2000, // loop : true, }) },
獲取數(shù)據(jù)
getInfo:function(){ var _this=this; XXX.ajax({ url: '...', success: (r)=> { if(!!r.ret){ _this.topInfo=r.ret; //此時(shí)獲取到數(shù)據(jù)再顯示Swiper _this.getFlag=1; } } }) },
下面再提供一個(gè)例子
頁面結(jié)構(gòu)
<div class="swBox" v-if="sw_flag&&!!banners.length"> <div class="swiper-container"> <div class="swiper-wrapper"> <div class="swiper-slide" v-for="(banner,index) in banners" :key="index" @click="toNextUrl(banner,index)"> <img :src="banner.image" alt="" /> </div> </div> <div class="swiper-pagination"></div> </div> </div>
初始化方法
swiperInit() { var mySwiper = new Swiper('.swiper-container', { pagination : '.swiper-pagination', paginationType : 'bullets', autoplay : 2000, observer:true, observeParents:false }) },
獲取數(shù)據(jù)
getData:function(){ var _this=this; //此處設(shè)置sw_flag變量的目的在于控制swiper顯示關(guān)閉開關(guān),當(dāng)數(shù)據(jù)重新請(qǐng)求時(shí),先關(guān)閉swiper,請(qǐng)求完畢數(shù)據(jù)再重新渲染頁面; _this.sw_flag=0; XXX.ajax({ url: '...', success: (r)=> { if(!!r.ret){ _this.banners=r.ret.banners||""; _this.sw_flag=1; //此時(shí)獲取到數(shù)據(jù)再初始化swiper _this.$nextTick(function(){ if(!!_this.banners.length){ _this.swiperInit(); } }); } } }) },
注:我用的swiper版本是 3.4.2
以上這篇解決Vue使用swiper動(dòng)態(tài)加載數(shù)據(jù),動(dòng)態(tài)輪播數(shù)據(jù)顯示白屏的問題就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
- 使用Vue-Awesome-Swiper實(shí)現(xiàn)旋轉(zhuǎn)疊加輪播效果&平移輪播效果
- 移動(dòng)端滑動(dòng)切換組件封裝 vue-swiper-router實(shí)例詳解
- vue-awesome-swiper 基于vue實(shí)現(xiàn)h5滑動(dòng)翻頁效果【推薦】
- 解決Vue中引入swiper,在數(shù)據(jù)渲染的時(shí)候,發(fā)生不滑動(dòng)的問題
- 詳解swiper在vue中的應(yīng)用(以3.0為例)
- Vue框架里使用Swiper的方法示例
- swiper在vue項(xiàng)目中l(wèi)oop循環(huán)輪播失效的解決方法
- vue中引用swiper輪播插件的教程詳解
- vue使用原生swiper代碼實(shí)例
相關(guān)文章
使用webpack搭建vue項(xiàng)目及注意事項(xiàng)
這篇文章主要介紹了使用webpack搭建vue項(xiàng)目的方法,本文以開發(fā)環(huán)境為例,通過實(shí)例代碼給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2019-06-06vue項(xiàng)目使用lodash節(jié)流防抖函數(shù)問題解決方案
在lodash函數(shù)工具庫中,防抖 _.debounce 和節(jié)流 _.throttle 函數(shù)在一些頻繁觸發(fā)的事件中比較常用,這篇文章主要介紹了vue項(xiàng)目使用lodash節(jié)流防抖函數(shù)問題與解決,需要的朋友可以參考下2023-10-10vue3 provide和inject底層組件的值不是響應(yīng)式的處理詳解
這篇文章主要為大家介紹了vue3 provide和inject底層組件的值不是響應(yīng)式的處理詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-08-08vue-cli3.x配置全局的scss的時(shí)候報(bào)錯(cuò)問題及解決
這篇文章主要介紹了vue-cli3.x配置全局的scss的時(shí)候報(bào)錯(cuò)問題及解決,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-04-04Vue+Element UI 樹形控件整合下拉功能菜單(tree + dropdown +input)
這篇文章主要介紹了Vue+Element UI 樹形控件整合下拉功能菜單(tree + dropdown +input)的方法,幫助大家更好的理解和學(xué)習(xí)vue,感興趣的朋友可以了解下2020-08-08vue實(shí)現(xiàn)登陸頁面開發(fā)實(shí)踐
本文主要介紹了vue實(shí)現(xiàn)登陸頁面開發(fā)實(shí)踐,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2022-05-05一文教會(huì)你如何運(yùn)行vue項(xiàng)目
最近因?yàn)楣卷?xiàng)目問題,開始學(xué)習(xí)vue,這篇文章主要給大家介紹了關(guān)于如何運(yùn)行vue項(xiàng)目的相關(guān)資料,文中還介紹了如何運(yùn)行別人的項(xiàng)目,需要的朋友可以參考下2022-06-06在vue中使用screenfull?依賴,實(shí)現(xiàn)全屏組件方式
這篇文章主要介紹了在vue中使用screenfull?依賴,實(shí)現(xiàn)全屏組件方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-12-12