swiper在angularjs中使用循环轮播失效的解决方法

Posted aillabig

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了swiper在angularjs中使用循环轮播失效的解决方法相关的知识,希望对你有一定的参考价值。

bug描述:我在anjularjs 中使用了swiper轮播图,通过动态获取到数据插入swiper-slide中,我在swiper初始化中设置了loop(循环),但是在出现了一点小问题,swiper会失效,划不动,当我设置固定的数据通过ng-src 插入到swiper-silde中,会正常轮播,但是第一张图会出现空白。通过查询了资料,发现swiper和angularjs执行的机制是不同的,swiper的机制是:初始化的时候自动扫描swiper-wrapper类下有多少个swiper-slide类块,则允许滑动多少个块。 而在angular始终在swiper初始化之后定义,swiper则无法正确scan有多少个slide(实际上找到一个待循环模板),所以划不动。

我在网上搜了一点资料很多人都是通过添加两个属性就解决了,但我的还是不行,以下为插入的属性。

1
2
observer:true,//修改swiper自己或子元素时,自动初始化swiper
observeParents:true,//修改swiper的父元素时,自动初始化swiper12

我通过在link中初始化swiper中添加延时计时器,可以解决,尽管我延迟的时间设置为0,但是正常的效果出现了,我也不知道什么问题,如果有人知道可以解答一下。

以下为我的代码,html代码如下

1
2
3
<div class="swiper-slide" ng-repeat="item in arr">
 <img ng-src="img/{{item}}" alt="" />
</div>

指令中的代码如下

1
2
3
4
5
6
7
8
9
10
11
12
13
link:function(){
setTimeout(function(){
var swiper=new Swiper(".swiper3",{
pagination: ‘.swiper-pagination3‘,
paginationClickable: true,
centeredSlides: true,
autoplay: 2000,
loop : true,
autoplayDisableOnInteraction: false,
 
 });
},0);
}

以上是关于swiper在angularjs中使用循环轮播失效的解决方法的主要内容,如果未能解决你的问题,请参考以下文章

vue——使用轮播组件swiper,设置 loop为true后,点击事件失效及轮播索引错乱问题

angularjs中使用轮播图指令swiper

swiper做轮播图

swiper在vue项目中的循环轮播bug以及点击事件

多组图自动无限循环(swiper轮播)

vue-awesome-swiper使用自动轮播和循环轮播不生效(loop和autoplay)