解决swiper轮播图显示最后一张图片问题

解决swiper轮播图显示最后一张图片问题

在使用swiper进行轮播图制作使,如果是由空数组创建

data () {
	  	return {
	  		swiperList:[]
	  	}
	  }
	  
	  
<swiper :options="swiperOption" >
	    <!-- slides -->
	    <swiper-slide v-for="item of list" :key="item.id">
	    	<img class="swiper-img" :src="item.imgUrl"/>
	    </swiper-slide>
	    <!-- Optional controls -->
	    <div class="swiper-pagination"  slot="pagination"></div>
	  </swiper>
	  
<script>
	export default {
		name: 'HomeSwiper',
		props: {
			list: Array
		},
		data () {
			return {
				swiperOption: {
					pagination: '.swiper-pagination',
					loop:true
				}
			}
		}
	}
</script>

轮播图会显示最后一张图片,如图:在这里插入图片描述
显示最后一张图。

原因:

当页面还没有接收ajax数据的时候,props的list接收的是swiperList:[]空数组,swiper的初始创建是通过空数组创建的,当ajax获取数据后,swiperList变成真正的数据项,再传给子组件时,才获取到新的数据,重新渲染新数据对应的图片,因为swiper的创建是根据空数组创建的才会出现上面的问题。

解决方法:

让swiper由完整的数据来创建,当this.list.length=0,list是空数组时,不会创建,当真正的数据传过来之后,swiper才会被创建,由此解决以上问题。

<swiper :options="swiperOption" v-if="showSwiper">

computed: {
			showSwiper () {
				return this.list.length
			}
		}
  • 4
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值