解决使用vue-awesome-swiper组件手动滚动点击失效问题

 更新时间:2023年06月30日 09:48:17   作者:Skywang  
这篇文章主要介绍了使用vue-awesome-swiper组件手动滚动点击失效问题解决,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪

问题

最近做了一个项目用了vue-awesome-swiper这个组件,遇到了一个问题。

就是vue引入swiper后,使用loop循环,然后给每个swiper-slide滑块绑定事件@click='fn()' ,由于是循环模式,swiper会复制两份swiper-slide滑块做循环的效果,但是这两份复制的滑块点击效果无效,其它的正常。

废话不多说 上代码

问题代码

这是把点击事件绑定在dom上

在 loop 开启的时候,dom 绑定事件是有问题的。因为在loop模式下slides前后会复制若干个slide,从而形成一个环路,但是却不会复制绑定在dom上的click事件。

因此只能使用 swiper 提供的 api 方法进行解决

解决方案

html

js

<script>
    import {
        swiper,
        swiperSlide
    } from "vue-awesome-swiper";
    var vm = null;
    export default {
        data() {
            return {
                swiperOption: {
                    notNextTick: true,
                    //循环
                    loop: true,
                    //设定初始化时slide的索引
                    initialSlide: 0,
                    //自动播放
                    autoplay: true,
                    autoplay: {
                        delay: 3000,
                        stopOnLastSlide: false,
                        disableOnInteraction: false,
                    },
                    // 设置轮播
                    effect: '',
                    //滑动速度
                    speed: 800,
                    //滑动方向
                    direction: 'horizontal',
                    //小手掌抓取滑动
                    // grabCursor : true,
                    //滑动之后回调函数
                    on: {
                        slideChangeTransitionEnd: function() {
                            console.log(this.activeIndex);
                            //切换结束时,告诉我现在是第几个slide
                            //                             const realIndex = this.activeIndex;
                            //                             vm.carousel(realIndex);
                        },
                        click: function() {
                          // 这里有坑,需要注意的是:this 指向的是 swpier 实例,而不是当前的 vue, 因此借助 vm,来调用 methods 里的方法 
                          // console.log(this); // -> Swiper
                          // 当前活动块的索引,与activeIndex不同的是,在loop模式下不会将 复制的块 的数量计算在内。
                            console.log('ss'+this.realIndex)
                            const realIndex = this.realIndex;
                            vm.carousel(vm.carousels[realIndex]);
                        }
                    },
                    //左右点击
                    //                  navigation: {
                    //                      nextEl: '.swiper-button-next',
                    //                      prevEl: '.swiper-button-prev',
                    //                  },
                    //分页器设置         
                    pagination: {
                        el: '.swiper-pagination',
                        clickable: true
                    }
                },
                swiperSlides: [1, 2, 3, 4],
                activeIndex: 0,
                carousels:[]
            }
        },
        components: {
            swiper,
            swiperSlide
        },
        computed: {
            swiper() {
                return this.$refs.mySwiper.swiper;
            }
        },
        created() {
            vm = this;
        },
        methods: {
            carousel(type) {
                if (type.url !== null) {
                    this.$router.push(type.redirect_to);
                } 
            }
        }
    }

如上图js里定义一个全局的变量vm,为了在swiper的AIP中调用vue的方法和绑定的数据, 这时候就可以解决点击事件失效的问题了!

以上就是解决使用vue-awesome-swiper组件手动滚动点击失效问题的详细内容,更多关于vue-awesome-swiper滚动点击的资料请关注脚本之家其它相关文章!

相关文章

  • 使用Webpack提升Vue.js应用程序的4种方法(翻译)

    使用Webpack提升Vue.js应用程序的4种方法(翻译)

    这篇文章主要介绍了使用Webpack提升Vue.js应用程序的4种方法(翻译),文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-10-10
  • Vue 样式绑定的实现方法

    Vue 样式绑定的实现方法

    学习 Vue 的时候觉得样式绑定很简单,但是使用的时候总是容易搞晕自己。这篇文章主要介绍了Vue 样式绑定的实现方法,感兴趣的小伙伴们可以参考一下
    2019-01-01
  • Vue组件中slot的用法

    Vue组件中slot的用法

    这篇文章交详细的给大家介绍了vue组件中slot的用法,主要是让组件的可扩展性更强,具体内容详情大家参考下本文
    2018-01-01
  • vite构建项目并支持微前端

    vite构建项目并支持微前端

    本文主要介绍了vite构建项目并支持微前端,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-01-01
  • Vue项目优化打包详解

    Vue项目优化打包详解

    这篇文章主要为大家介绍了Vue项目的优化打包,具有一定的参考价值,感兴趣的小伙伴们可以参考一下,希望能够给你带来帮助
    2021-11-11
  • 基于Vue2实现简易的省市区县三级联动组件效果

    基于Vue2实现简易的省市区县三级联动组件效果

    这是一个基于Vue2的简易省市区县三级联动组件,可以控制只显示省级或只显示省市两级,可设置默认值等。提供原始省市县代码和名称数据,适用于各种有关城市区县的应用。需要的朋友可以参考下
    2018-11-11
  • 详解Vue中组件传值的多重实现方式

    详解Vue中组件传值的多重实现方式

    这篇文章主要介绍了详解Vue中组件传值的多重实现方式,非常不错,具有一定的参考借鉴价值,需要的朋友可以参考下
    2019-08-08
  • 浅谈在vue中使用mint-ui swipe遇到的问题

    浅谈在vue中使用mint-ui swipe遇到的问题

    今天小编就为大家分享一篇浅谈在vue中使用mint-ui swipe遇到的问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-09-09
  • Vue2 响应式系统之深度响应

    Vue2 响应式系统之深度响应

    这篇文章主要介绍了Vue2 响应式系统之深度响应,文章基于Vue2 响应式系统的相关资料展开对Vue2 深度响应的介绍,需要的小伙伴可以参考一下
    2022-04-04
  • Vue高版本中一些新特性的使用详解

    Vue高版本中一些新特性的使用详解

    这篇文章主要介绍了Vue高版本中一些新特性的使用,需要的朋友可以参考下
    2018-09-09

最新评论