vue-awesome-swiper和回调函数

时间:2017-03-30 02:22:53

标签: javascript callback vue.js vuejs2 swiper

我正在使用Vue.js 2和vue-awesome-swiper。

我想在swiper onSlideChangeEnd(swiper)

的回调中至少完成这两件事中的一件事
  1. 能够触发功能onSwipe()
  2. 访问this.private.privateData
  3. 我认为潜在的问题是我不知道如何访问代表swiper的this,也不知道我的App.vue对象touchEventsTarget。

    当我尝试this.private.privateData时,我得到Uncaught TypeError: Cannot read property 'orderFilter' of undefined这是有道理的。

    我该怎么办?谢谢。

    App.vue

      <template>
      <swiper :options="swiperOption" ref="mySwiper">
        <!-- slides -->
        <swiper-slide>I'm Slide 1</swiper-slide>
        <swiper-slide>I'm Slide 2</swiper-slide>
      </swiper>
    </template>
    
    <script>
      export default {
        name: 'carrousel',
        data() {
          return {
            private: {
                privateData : 'private'
            },
            swiperOption: {
    
              notNextTick: true,
              setWrapperSize :true,
              autoHeight: true,
              onSlideChangeEnd(swiper) {
    
                   ***** DO SOMETHING HERE *****
              },
            }
          }
        },
    
       methods : {
         onSwipe() {console.log('Swiped')};
       },
        computed: {
          swiper() {
            return this.$refs.mySwiper.swiper
          }
        },
        mounted() {
          console.log('this is current swiper instance object',this.swiper)
    
        }
      }
    </script>
    

1 个答案:

答案 0 :(得分:4)

使用闭包。

  data(){
    const vue = this;
    return {
      private: {
        privateData : 'private'
      },
      swiperOption: {
        notNextTick: true,
        setWrapperSize :true,
        autoHeight: true,
        onSlideChangeEnd:function(){
          console.log(vue.private.privateData);
          vue.onSwipe()
        }
      }
    }
  },