vue中使用swiper的时候第二轮事件不会触发

vue中使用swiper的时候第二轮事件不会触发

首先说明导致这样的结果的原因:官方解释是轮播在循环轮播的时候他是前面复制一份后面复制一份,这样看起来就是无缝滚动,但是在复制的时候不会复制事件,所以会有事件不会触发

解决这种有两种方法,第一种loopfalse,这样没有复制元素自然也不存在复制事件这一说法

第二种重新写options
第一步定义ref跟重新定义options
在这里插入图片描述

在这里插入图片描述
data里面是不需要的

  • 计算属性里面写个事件swiper事件是原swiper自带的在点击的时候computed会自动监听跟watch差不多(缓存),然后让其指向我们当前使用的swiper让其有原生的方法,
  • swiper里面有个on属性 里面是绑定事件让其执行swiper方法,返回当前dom,常用的获取id的方式
    clickedSlide当前轮播dom
    activeIndexloop模式下注意该值会被加上复制的slide数
    realIndex与activeIndex不同的是,在loop模式下不会将复制的块的数量计算在内。
    常用获取的方法 其余看文档
    切记:最后要将optins返回 然后绑定值options
  computed: {
  
    swiper() {
      return this.$refs.mySwiper.swiper
    },
    swiperOption() {
      let option = {
        slidesPerView: 5,
        // height: 'auto',
        autoplay: {
          delay: 3000,
          stopOnLastSlide: false,
          /* 触摸滑动后是否继续轮播 */
          disableOnInteraction: false
        },
        spaceBetween: 1,
        // observer: true,//修改swiper自己或子元素时,自动初始化swiper
        // observeParents: true,//修改swiper的父元素时,自动初始化swiper 
        direction: "vertical", //设置垂直滚动方向
        speed: 800,//滚动速度
        grabCursor: true,
        loop: true,//循环滚动
        //这里进行事件处理
        on: {
          click: (swiper) => {
            console.log(this.date[this.swiper.clickedSlide.getAttribute('data-index')].userId);
            this.$store.commit("showDialog5", this.date[this.swiper.clickedSlide.getAttribute('data-index')].userId);
          },
        },
      }
      //这里要将配置返回出去
      return option 
    }
  },

在这里插入图片描述

Vue使用Swiper,可以按照以下步骤进行: 1. 安装Swiper 在终端使用npm命令安装Swiper: ``` npm install swiper --save ``` 2. 引入Swiper 在需要使用Swiper的组件,通过import语句引入Swiper: ``` import Swiper from 'swiper' import 'swiper/css/swiper.css' ``` 其,第二行代码是引入Swiper的样式文件。 3. 初始化Swiper 在组件的mounted钩子函数初始化Swiper: ``` mounted () { new Swiper('.swiper-container', { // Swiper的配置参数 }) } ``` 其,`.swiper-container`是Swiper容器的类名,Swiper的配置参数可以根据需要进行设置。 4. 编写Swiper容器 在组件的template,编写Swiper容器: ``` <template> <div class="swiper-container"> <div class="swiper-wrapper"> <!-- Swiper的内容 --> </div> </div> </template> ``` 其,`.swiper-wrapper`是Swiper的内容容器,可以在其编写Swiper的内容。 5. 完整代码示例 ``` <template> <div class="swiper-container"> <div class="swiper-wrapper"> <div class="swiper-slide"> <!-- Swiper的内容 --> </div> <div class="swiper-slide"> <!-- Swiper的内容 --> </div> <div class="swiper-slide"> <!-- Swiper的内容 --> </div> </div> </div> </template> <script> import Swiper from 'swiper' import 'swiper/css/swiper.css' export default { mounted () { new Swiper('.swiper-container', { // Swiper的配置参数 }) } } </script> <style> .swiper-container { width: 100%; height: 100%; } .swiper-slide { text-align: center; font-size: 18px; background: #fff; /* required swiper properties */ flex: 1; justify-content: center; align-items: center; } </style> ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小菜鸟学代码··

给打赏的我会单独一对一讲解

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值