1. 程式人生 > >swiper.js外掛遇到的問題 第二張劃不了,只能划動一張

swiper.js外掛遇到的問題 第二張劃不了,只能划動一張

使用avalonjs動態迴圈生成swiper-slide類,在swiper-wrapper裡生成6個以上的滑動頁,可是就是劃不到第二頁,嘗試將longSwipesRatio的值修改到最小,仍然不起作用。

<div class="swiper-container" ms-visible="result.status==1">
<div class="swiper-wrapper" >
     <!-- =======迴圈部分======= -->
      <div class="swiper-slide" ms-repeat="result.mediaList">
         //此處為一個滑動頁內容
      </div>    
      <!-- ============== -->
</div>
</div>

在測試時發現,手動複製n個迴圈部分,則可以滑動n個塊;手動調節視窗大小,使頁面文件發生改變(動態響應)後,可以正常滑動。於是猜測swiper的機制是:初始化的時候自動掃描swiper-wrapper類下有多少個swiper-slide類塊,則允許滑動多少個塊。而在avalon始終在swiper初始化之後定義,swiper則無法正確scan有多少個slide(實際上找到一個待迴圈模板),所以劃不動。

找到原因後,只須對症下藥。在查閱SwiperAPI時發現,有這樣兩個引數:observerobserveParents,前者啟動動態檢查器,當改變swiper的樣式(例如隱藏/顯示)或者修改swiper

的子元素時,自動初始化swiper。後者原理和前者一樣,只是將observe應用於Swiper的父元素。兩者預設值都為false。所以在原來的swiper初始化程式碼中加上這兩行即可。

var mySwiper = new Swiper('.swiper-container',{
pagination : '.swiper-pagination',
    paginationClickable: true,
    longSwipesRatio: 0.3,
    touchRatio:1,
    observer:true,//修改swiper自己或子元素時,自動初始化swiper    重要
    observeParents:true,//修改swiper的父元素時,自動初始化swiper  重要
})