swiper在vue專案中loop迴圈輪播失效
版權宣告:本文為博主原創文章,轉載請註明來源。 https://blog.csdn.net/dclnet/article/details/80951884
長話短說,在vue(2.5.x)中使用swiper(4.3.3),輪播加了autoplay和loop、observer、observeParents等引數還是很詭異的無法迴圈輪播;
那麼可以這樣寫程式碼試試:
this.$api.queryImages().then((resp) => { if(resp && resp.data.resultCode == "0"){ this.swiperImgs = resp.data.data; this.$nextTick(() => { // 下一個UI幀再初始化swiper this.initSwiper(); }); } })
是的,關鍵就在於上面這個初始化swiper的呼叫了,一般會用v-for迴圈渲染,然後馬上初始化swiper,但是這樣可能導致初始化時v-for還沒渲染完畢,所以可能swiper錯亂, 那麼swiper放在$nextTick下一個UI幀再初始化,保證了v-for已經完成迴圈。
initSwiper() { if (this.swiper != null) return; this.swiper = new Swiper('.swiper-container', { loop: true, speed: 900, autoplay: { delay: 3000, //3秒切換一次 disableOnInteraction: false }, observer: true,//修改swiper自己或子元素時,自動初始化swiper observeParents: true,//修改swiper的父元素時,自動初始化swiper pagination: { el: '.swiper-pagination', // dynamicBullets: true, } }); }