angular中使用swiper時的問題

使用angularjs動態循環生成swiper-slide類,在swiper-wrapper裏生成6個以上的滑動頁,但是就是劃不到第二頁,嘗試將longSwipesRatio的值修改到最小,仍然不起做用。angularjs

 
1
2
3
4
5
6
7
8
<div class= "swiper-wrapper" >
<!-- =======循環部分======= -->
<div class= "swiper-slide" ng-repeat= "result in mediaList" >
//此處爲一個滑動頁內容
</div>
<!-- ============== -->
</div>
</div>

在測試時發現,手動複製n個循環部分,則能夠滑動n個塊;手動調節窗口大小,使頁面文檔發生改變(動態響應)後,能夠正常滑動。app

因而猜想swiper的機制是:初始化的時候自動掃描swiper-wrapper類下有多少個swiper-slide類塊,則容許滑動多少個塊。 而在angular始終在swiper初始化以後定義,swiper則沒法正確scan有多少個slide(實際上找到一個待循環模板),因此劃不動。ide

找到緣由後,只須對症下藥。 在查閱Swiper的API時發現,有這樣兩個參數:observer和observeParents,前者啓動動態檢查器,當改變swiper的樣式(例如隱藏/顯示)或者修改swiper的子元素時,自動初始化swiper。後者原理和前者同樣,只是將observe應用於Swiper的父元素。二者默認值都爲false。 因此在原來的swiper初始化代碼中加上這兩行便可。測試

 
1
2
3
4
5
6
7
8
var mySwiper = new Swiper( '.swiper-container' ,{
pagination : '.swiper-pagination' ,
paginationClickable: true ,
longSwipesRatio: 0.3,
touchRatio:1,
observer: true , //修改swiper本身或子元素時,自動初始化swiper
observeParents: true , //修改swiper的父元素時,自動初始化swiper
})
相關文章
相關標籤/搜索