zoukankan      html  css  js  c++  java
  • 以directive的方式进行swiper轮播效果

    在我们的项目中,轮播图效果一般会调用多次,所以swiper代码的复用性会很高,此时,我们可以将swiper写成一个v-swiper指令,在我们需要多次调用swiper的时候,只需要在页面结构上添加v-swiper标签就可以了

    首先,我们依旧是通过在created钩子函数中添加一个延时器,将实例中数据更改成为模拟后端传过来数据的方式,来进行实例化Vue

        new Vue({
            el:"#app",
            data:{
                dataList:[]
            },
            created(){
                setTimeout(()=>{
                    this.dataList = [1,2,3]
                },2000)
            }
        })

    此时,我们可以通过自定义指令对象提供的钩子函数,比如inserted钩子函数来进行实例化

    insert()钩子函数的作用是被绑定元素插入父节点时使用

        Vue.directive('swiper',{
            inserted(){
                    new Swiper('.swiper-container',{
                        loop:true,
                        pagination:{
                            el:".swiper-pagination"
                        }
                    })
            }
        })

    经过我们对页面结构类名为swiper-slide的标签进行遍历过后

            <div
                class="swiper-slide"
                v-for="(data,index) in dataList"
                :key="index"
                v-swiper
            >{{data}}</div>

    我们会发现小圆点不能用了,这是为什么呢?

    因为我们在遍历的时候,相当于遍历的每一个都添加了v-swiper自定义指令,也就等于是我们还是对swiper进行了多次实例,那我们应该怎么解决

    答案显而易见,我们可以利用自定义指令对象提供的钩子函数中可以传入的属性来解决这个问题

    比如binding属性,我们可以将一个对象赋给v-swiper,然后将index和数组作为对象的属性,此时我们可以通过binding.value来拿到v-swiper后面的属性值所绑定的值,就可以利用if判断来只给最后一个swiper-slide添加v-swiper,再通过给v-swiper:+我们的类名的方式,来通过binding.arg的方式来拿到我们所传入的具体是哪个轮播图页面结构,就可以实现一个swiper轮播图效果的自定义指令封装效果了

        Vue.directive('swiper',{
            inserted(el,binding){
                //我们可以通过binding来拿到我们传过来的index值和总数组,利用传过来的值,只给最后一个添加v-swiperr
                if(binding.value.index === binding.value.dataList.length-1){
                    new Swiper('.'+binding.arg,{
                        loop:true,
                        pagination:{
                            el:".swiper-pagination"
                        }
                    })
                }
            }
        })

    以上可能会有所出入,若发现,希望能够及时指出,定加以改正,互相学习

  • 相关阅读:
    AI芯片:高性能卷积计算中的数据复用
    矩阵乘法加速器的设计框架
    NVDLA中Winograd卷积的设计
    神经网络加速器应用实例:图像分类
    Simple TPU的设计和性能评估
    TPU中的指令并行和数据并行
    TPU中的脉动阵列及其实现
    动手写一个简单版的谷歌TPU
    利用Xilinx HLS实现LDPC译码器
    FPGA上如何求32个输入的最大值和次大值:分治
  • 原文地址:https://www.cnblogs.com/Huskie-/p/13510989.html
Copyright © 2011-2022 走看看