一、问题
在uniapp中使用
swiper-limited-load
组件,会遇到一个问题,就是滑到第一项或最后一项时,重新设置current
值不生效的问题
原因分析:
1)@change
中重新赋值current
要在this.$nextTick
中调用赋值函数
2)@change
绑定的函数中要再次重新为current
变量赋值
二、代码
<swiper
:style="{height:scrollH+'px'}"
:current="swiperCurrent"
:duration="duration"
circular
@change="swiperChange"
class="swiper">
<swiper-item v-for="(item,index) in swiperList" :key="index">
...
</swiper-item>
</swiper>
// ...省略的代码与原组件写法一致,在此只列出需要给current赋值的部分
swiperChange: function (e) {
// 重点代码-1
this.swiperCurrent = e.detail.current // ( * )
...
if (current - lastIndex == 1 || isLoopPositive) {
// 如果是滑到了左边界或者下一个还未有值,弹回去
if (currentItem == null) {
info.current = NO_NEXT_PAGE
// 重点代码-2,要有nextTick
this.$nextTick(()=>{ // ( * )
this.swiperCurrent = lastIndex // ( * )
})
...
}
...
}
},
参考文章:https://www.jianshu.com/p/0b73321e024e
参考文章:https://blog.csdn.net/qq_29184685/article/details/120161758