vue
+typescript
+vue-awesome-swiper
項目,首頁輪播使用vue-awesome-swiper
,banner數據從服務器端加載。
數據加載須要時間,若是直接載入vue-awesome-swiper
,結果是swiperOption
配置的loop: true
不生效:vue
swiperOption: { loop: true, }
猜想緣由就是初始化的時候沒有足夠的元素swiper-slide
,因此沒有執行復制元素的操做,就沒有loop
。
爲了驗證這個猜想,作了一下幾個嘗試:typescript
結果是loop依然沒有生效。
?loop沒響應或者缺乏監聽器observer瀏覽器
observer: true
屬性進行監聽,再運行。依然不生效。
滑塊的頁腳同時變化
!observer生效——loop不響應服務器
loop屬性不是響應式的,數據變更以後不會自動初始化整個滑塊
ide
開始的時候,想的辦法是初始化設置init: false
,獲取數據以後再執行init()
,能夠解決該問題。
後來看了一篇文章,能夠對數據長度作一個判斷:oop
<swiper v-if="banner.length > 0" :options="swiperOption" ref="mySwiper" @someSwiperEvent="callback">
增長這個判斷以後,loop的問題解決了。
緣由是隻有banner.length > 0
的時候,纔會掛載swiper
,只有掛在以後纔會執行初始化的init
操做,因此能夠確保loop
執行的時候,滑塊元素swiper-slide
是存在且完整的,完美解決!.net
解決bug的友情連接~code