vue-infinite-scroll 实现无限滚动

引言

在 Web 中,无限加载是必需的一项功能,大部分流行的插件都是基于 jQuery 的,好在找到一个 vue-infinite-scroll 插件。于是开始了 vue-infinite-scroll 的踩坑。

1.安装

npm install vue-infinite-scroll --save

2.载入

在 main.js 文件中

// 无限加载
import infiniteScroll from 'vue-infinite-scroll'
Vue.use(infiniteScroll)

3.使用

  • {{item}}
data () {
    return {
      list: [],
      busy: false,
      page: 0,
      total: 0,
      params: {
        current: 1,
        size: 10
      }
    }
  }
 methods: {
    loadMore: function() {
      this.busy = true
      setTimeout(() => {
        // 当前页数如果小于总页数,则继续请求数据,如果大于总页数,则滚动加载停止
        if (this.params.current < this.total) {
          //  这里是列表请求数据的接口,在这个接口中更新总页数
          this.getData(this.page)
        } else {

        }
        this.busy = false
      }, 1000)
    },
    getData (data) {
      this.params.current = data
      this.$api.exam.examIndex(this.params).then(res => {
        this.log(res.data)
        if (res.data.code === 200) {
          this.busy = false
          // 总条数
          this.total = res.data.page.total
          // 页数递增
          this.page++
          const list = res.data.list
      })
    }
  }

v-infinite-scroll="loadMore" : 表示回调函数是 loadMore

infinite-scroll-throttle-delay="500": 检查 busy 的值的时间间隔,默认值是 200 ,因为 vue-infinite-scroll 的基础原理就是,vue-infinite-scroll 会循环检查 busy 的值,以及是否滚动到底,只有当:busy 为 false 且滚动到底,回调函数才会执行。

infinite-scroll-disabled="busy": 表示由变量 busy 决定是否执行 loadMore , false 则执行 loadMore , true 则不执行

immediate-check="false": 默认值 true , 表示该指令应该在绑定后立即检查。如果可能,内容不够高,不足以填满可滚动的容器。

infinite-scroll-distance="50": 距离页面底部多少像素时,执行 loadMore 函数

官方文档

你可能感兴趣的:(vue-infinite-scroll 实现无限滚动)