神一样的bug,关于swiper

发布于 2022-09-06 23:43:34 字数 2861 浏览 19 评论 0

vue-awesome-swiper
使用vue-awesome-swiper封装了一个swiper组件,结果出现了这么一个问题
设置了loop:true,当动态加载的slides只有两个的时候,第一个slide从第二次loop开始,一闪而过(大于等于3个slide时候正常),不管是调用updateSlides()还是延迟加载,都不行,很崩溃。
然后决定,slides两个的时候关闭loop,于是设置了一个长度判断的参数isloop,结果,奇葩出来了,即便不使用这个参数,swiper仍然可以正常运作了。。。。
上代码。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。请大神解释。。。。。。。。。。。。。

clipboard.png
直接把isloop设置true或者false组件是不能如逾期运行的,只有设置函数计算才可以得到的布尔值才可以
组件详情如下:

<template>
<swiper class='artswiper' :options="swiperOption" ref="artSwiper">
    <!-- slides -->
    <swiper-slide class='homeslide' :key='index+1' v-for='(i,index) in swiperlist'>
        <img class="slideimg" :src="i"/>
    </swiper-slide>
    <div class="swiper-pagination" v-if="guide" slot="pagination"></div>
    <div class="swiper-button-next" v-if="showpre" slot='button-next'></div>
    <div class="swiper-button-prev" v-if="showpre" slot='button-prev'></div>
</swiper>
</template>

<script>
import 'swiper/dist/css/swiper.css'
import { swiper, swiperSlide } from 'vue-awesome-swiper'
export default {
    name:'artswiper',
    components: {
       swiper,
       swiperSlide
    },
    props:{
        swiperlist:'',
        showpre:{
            default:false
        },
        auto:{
            default:true
        },
        guide:{
            default:true
        },
        ispause:{
            default:false
        },
        isloop:{
            default:true
        }
    },
    data () {
        var v = this;
        return {
            swiperOption:{
                resistanceRatio:0,
                loop:true,
                autoplay:this.auto?{
                    disableOnInteraction:false,
                }:false,
                pagination: {
                   el: '.swiper-pagination',
                   clickable: true
               },
               on:{
                   slideChange(ev) {               
                   this.activeIndex,this.realIndex)
                  v.$emit('slidechange',this.realIndex)
                }
              },
              navigation: {
                nextEl: '.swiper-button-next',
                prevEl: '.swiper-button-prev',
              },
            }
        }
    },
    computed:{
        swiper() {
           return this.$refs.artSwiper.swiper
        },
    },
    mounted:function(){
    },
    watch:{
        ispause(val,old) {
            //swiper切换显示时候,重新计算slides,并且开关自动播放
            this.swiper.updateSlides()
            if(val) {
                this.swiper.autoplay.stop();
            }else {
                this.swiper.autoplay.start();
            }
        }
    }
}
</script>

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

奢欲 2022-09-13 23:43:34
  1. vue-awesome-swiper 问题很多;
  2. 注意在于 swper的更新,4.0和 3.0的API变化,供参考。

Swiper4的API变化

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文