记录一次闭包解决的问题

12 篇文章 0 订阅
2 篇文章 0 订阅
场景:vue-awesome-swiper的点击事件中既要访问swiper的实例也要访问vue的实例(此时this只能访问到swiper的是对象)
解决方案: 利用闭包把vue的实例this当做参数传入点击事件参数
swiperOptionPicLunbo: {
  pagination: {
     el: '.swiper-pagination',
     clickable: true
   },
   touchMoveStopPropagation: true,
   loop: true,
   resistanceRatio: 0,
   observer: true,
   observeParents: true,
   autoplay: {
     delay: 3000,
     stopOnLastSlide: false,
     disableOnInteraction: false
   },
   preventLinksPropagation: false, // 阻止点击事件冒泡
   on: {
     //在loop:true模式下slides前后会复制若干个slide,从而形成一个环路,但是却不会复制绑定在dom上的click事件,所以点击事件写在这
     click: (function (that) {
       return function (event) {
         //这里this 指向的是 swpier 实例,而不是当前的 vue, 因此借助闭包,把vue的实例this当做参数传进来,来调用 methods 里的方法
         const realIndex = this.realIndex
         that.getList(that.lunboImgs[realIndex], realIndex)
       }
     })(this),
     // 回调函数,swiper从一个slide过渡到另一个slide结束时执行。
     slideChangeTransitionEnd () {
       // 在Loop模式下Swiper切换到指定slide。切换到的是slide索引是realIndex
       this.slideToLoop(this.realIndex, 0, false)
     }
   },
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值