vue 动态修改 swiper 属性失效

发布于 2022-09-12 04:12:09 字数 1020 浏览 18 评论 0

export default {
  data() {
    return {
      mySwiper
    };
  },
  mounted() {
    this.mySwiper = new Swiper(".swiper-container-slide", {
      noSwipingClass: "stop-swiping",
      pagination: {
        el: ".swiper-pagination",
        clickable: false,
        renderBullet: function(index, className) {
          return '<span class="' + className + '">' + (index + 1) + "</span>";
        }
      },
      navigation: {
        prevEl: ".swiper-button-prev",
        nextEl: ".swiper-button-next"
      },
      on: {
        reachEnd: () => {
          this.mySwiper.params.pagination.clickable = true; // 对 clickable 属性进行了修改,但失效
          console.log("到了最后一个slide");
        }
      }
    });
  }
};

我的预期效果是默认分页器无法点击,但当滚动到最后一页的时候,分页器方开启点击,经过如下尝试均以失败告终:

  • 尝试通过官方api this.mySwiper.params.pagination.clickable 方法,失效;
  • 尝试通过直接修改 data 方法,失效;
  • 尝试通过 watch 监视修改方法,失效;

还望指点,谢谢!

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

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

发布评论

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

评论(2

池予 2022-09-19 04:12:09

按照官网的案例,设置后需要重新初始化

//如果你在swiper初始化后才决定使用clickable,可以这样设置 
mySwiper.params.pagination.clickable = true ; 
//此外还需要重新初始化pagination 
mySwiper.pagination.destroy()
mySwiper.pagination.init()
mySwiper.pagination.bullets.eq(0).addClass('swiper-pagination-bullet-active');
浮生面具三千个 2022-09-19 04:12:09

试试看:
在data里面定义一个clickable:false
pagination对象那里用this.clickable代替false
reachEnd函数里面改为this.clickable = true

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