解決Vue使用swiper動態(tài)加載數(shù)據(jù),動態(tài)輪播數(shù)據(jù)顯示白屏的問題
Vue使用swiper插件時(shí)特別是輪播元素含有動態(tài)數(shù)據(jù)時(shí)可能會出現(xiàn)數(shù)據(jù)為空或者白屏的問題
使用下面的方法可以解決(保證在數(shù)據(jù)請求之后再渲染頁面)
頁面結(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;
}
}
})
},
下面再提供一個例子
頁面結(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ù)重新請求時(shí),先關(guān)閉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í)獲取到數(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ù)顯示白屏的問題就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持腳本之家。
- 使用Vue-Awesome-Swiper實(shí)現(xiàn)旋轉(zhuǎn)疊加輪播效果&平移輪播效果
- 移動端滑動切換組件封裝 vue-swiper-router實(shí)例詳解
- vue-awesome-swiper 基于vue實(shí)現(xiàn)h5滑動翻頁效果【推薦】
- 解決Vue中引入swiper,在數(shù)據(jù)渲染的時(shí)候,發(fā)生不滑動的問題
- 詳解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)文章
vue大文件分片上傳之simple-uploader.js的使用
本文主要介紹了vue大文件分片上傳之simple-uploader.js的使用,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2023-05-05
vue中@click和@click.native.prevent的區(qū)別
這篇文章主要介紹了vue中@click和@click.native.prevent的區(qū)別,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-04-04
webstrom Debug 調(diào)試vue項(xiàng)目的方法步驟
這篇文章主要介紹了webstrom Debug 調(diào)試vue項(xiàng)目的方法步驟,詳細(xì)的介紹了兩種調(diào)試vue項(xiàng)目的方法,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2018-07-07
Vue項(xiàng)目中禁用ESLint的幾種常見方法小結(jié)
Vue ESLint是一個基于ESLint的插件,它專門為Vue.js應(yīng)用設(shè)計(jì),用于提供JavaScript代碼風(fēng)格檢查和最佳實(shí)踐規(guī)則,Vue項(xiàng)目通常會集成ESLint,目的是為了提升代碼質(zhì)量、保持一致性和可維護(hù)性,本文介紹了Vue項(xiàng)目中禁用ESLint的幾種常見方法,需要的朋友可以參考下2024-07-07

