解決Vue使用swiper動態(tài)加載數(shù)據(jù),動態(tài)輪播數(shù)據(jù)顯示白屏的問題
Vue使用swiper插件時特別是輪播元素含有動態(tài)數(shù)據(jù)時可能會出現(xiàn)數(shù)據(jù)為空或者白屏的問題
使用下面的方法可以解決(保證在數(shù)據(jù)請求之后再渲染頁面)
頁面結構
<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的值獲取到時再調用初始化方法
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ù)據(jù)再顯示Swiper
_this.getFlag=1;
}
}
})
},
下面再提供一個例子
頁面結構
<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;
//此處設置sw_flag變量的目的在于控制swiper顯示關閉開關,當數(shù)據(jù)重新請求時,先關閉swiper,請求完畢數(shù)據(jù)再重新渲染頁面;
_this.sw_flag=0;
XXX.ajax({
url: '...',
success: (r)=> {
if(!!r.ret){
_this.banners=r.ret.banners||"";
_this.sw_flag=1;
//此時獲取到數(shù)據(jù)再初始化swiper
_this.$nextTick(function(){
if(!!_this.banners.length){
_this.swiperInit();
}
});
}
}
})
},
注:我用的swiper版本是 3.4.2
以上這篇解決Vue使用swiper動態(tài)加載數(shù)據(jù),動態(tài)輪播數(shù)據(jù)顯示白屏的問題就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關文章
vue項目使用lodash節(jié)流防抖函數(shù)問題解決方案
在lodash函數(shù)工具庫中,防抖 _.debounce 和節(jié)流 _.throttle 函數(shù)在一些頻繁觸發(fā)的事件中比較常用,這篇文章主要介紹了vue項目使用lodash節(jié)流防抖函數(shù)問題與解決,需要的朋友可以參考下2023-10-10
vue3 provide和inject底層組件的值不是響應式的處理詳解
這篇文章主要為大家介紹了vue3 provide和inject底層組件的值不是響應式的處理詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2023-08-08
Vue+Element UI 樹形控件整合下拉功能菜單(tree + dropdown +input)
這篇文章主要介紹了Vue+Element UI 樹形控件整合下拉功能菜單(tree + dropdown +input)的方法,幫助大家更好的理解和學習vue,感興趣的朋友可以了解下2020-08-08
在vue中使用screenfull?依賴,實現(xiàn)全屏組件方式
這篇文章主要介紹了在vue中使用screenfull?依賴,實現(xiàn)全屏組件方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-12-12

