Assassin方法集

222 阅读1分钟

不打工没钱,打工也没钱,只不过打工一时饿不死而已,不打工很快就饿死。你好像只会说一句话,我看了一下聊天记录,我们的聊天记录里,无论我说什么,你都只回一句:早安,打工人!

全局自定义指令-按钮防抖

//在utils里面创建directive.js 写入:
const throttle = {
      bind: (el, binding) => {
        let throttleTime = binding.value; // 防抖时间
        if (!throttleTime) { // 用户若不设置防抖时间,则默认2s
          throttleTime = 2000;
        }
        let cbFun;
        el.addEventListener('click', event => {
          if (!cbFun) { // 第一次执行
            cbFun = setTimeout(() => {
              cbFun = null;
            }, throttleTime);
          } else {
            event && event.stopImmediatePropagation();
          }
        }, true);
      }
}

const directives = {
    throttle
}

export default {
    install(Vue){
        Object.keys(directives).forEach((key)=>{
            Vue.directive(key,directives[key])
        })
    }
}

// 在main.js里面写入
import Directives from '@/utils/directive.js'
Vue.use(Directive)

//在组件按纽中使用写入
<button @click="sayHello" v-throttle>提交</button>
<button @click="sayHello" v-throttle='1000'>提交</button>

Swiper轮播图插件

在下载swiper的时候要加上版本,不然下载后引入各种报错,不加版本默认下载的是swiper6最新版,文件夹里的路径跟swiper4都不一样啦,所以报错说找不到swiper.css

所以安装指定npm install vue-awesome-swiper@3 --save-dev 来个小案例

<template>
  <div class="swiperPage">
    <swiper :options="swiperOption" ref="mySwiper">
      <swiper-slide>我是Slide1</swiper-slide>
      <swiper-slide>我是Slide2</swiper-slide>
      <swiper-slide>我是Slide3</swiper-slide>
      <swiper-slide>我是Slide4</swiper-slide>
      <div class="swiper-pagination" slot="pagination"></div>
      <div class="swiper-button-prev" slot="button-prev"></div>
      <div class="swiper-button-next" slot="button-next"></div>
    </swiper>
  </div>
</template>

<script>
// 引入插件
import { swiper, swiperSlide } from 'vue-awesome-swiper'
import 'swiper/dist/css/swiper.css'

export default {
  components: {
    swiper,
    swiperSlide
  },
  data () {
    return {
      // 配置项
      swiperOption: {
        loop: true,
        slidesPerView: 3,
        spaceBetween: 20,
        autoplay: {
          delay: 3000,
          stopOnLastSlide: false,
          disableOnInteraction: false
        },
        pagination: {
          el: '.swiper-pagination',
          clickable: true // 允许分页点击跳转
        },
        navigation: {
          nextEl: '.swiper-button-next',
          prevEl: '.swiper-button-prev'
        }
      }
    }
  },
  computed: {
    swiper () {
      return this.$refs.mySwiper.swiper
    }
  },
  mounted () {
    // current swiper instance
    // 然后你就可以使用当前上下文内的swiper对象去做你想做的事了
    // this.swiper.slideTo(3, 1000, false)
    console.log(this.swiper)
  }
}
</script>
<style scoped >
.swiperPage .swiper-container{
  position: relative;
  width: 600px;
  height: 200px;
}
.swiperPage .swiper-container .swiper-slide{
  width: 100%;
  line-height: 200px;
  background: pink;
  color: #fff;
  font-size: 16px;
  text-align: center;
}
</style>

如果swiper-slide是动态加载的数据,loop=true会失效,活动到最后一张不能继续循环滑动
解决办法:在swiper外边套一层div,写上v-if="slideList.length"即可