zoukankan      html  css  js  c++  java
  • vue 无限滚动问题

    如今web开发中,无限加载是必需的一项功能,尤其是在移动端开发中,一个列表往往默认只加载10条,想看更多只能逐渐往下翻页。那么今天就看看如何在Vue-Cli中实现这个功能。

    当前找到两个插件

    1 element-ui的infiniteScroll无限滚动(适合vue2,vue3)

      infiniteScroll是2.9.0版本新增的特性,旧的项目需要升级element版本(注意升级可能导致其他页面的无措,谨慎升级)

      链接  https://element.eleme.cn/2.12/#/zh-CN/component/infiniteScroll

    <template>
      <ul class="infinite-list" v-infinite-scroll="load" style="overflow:auto">
        <li v-for="i in count" class="infinite-list-item">{{ i }}</li>
      </ul>
    </template>
    
    <script>
      export default {
        data () {
          return {
            count: 0
          }
        },
        methods: {
          load () {
            this.count += 2
          }
        }
      }
    </script>

    2vue-infinite-scroll(官网https://github.com/ElemeFE/vue-infinite-scroll)只适合vue2

      步骤 npm install vue-infinite-scroll --save

                    2  import infiniteScroll from 'vue-infinite-scroll'

               Vue.use(infiniteScroll)
     使用示例,此处只写相关代码
      <div v-infinite-scroll="loadMore" infinite-scroll-disabled="busy" infinite-scroll-distance="10">
           <div v-for="item in data" :key="item.index">{{item.name}}</div>
       </div>

      

    data () {
        return {
          count: 0,
          data: [],
          busy: false
        }
      }
    methods: {
        loadMore: function() {
          this.busy = true
          setTimeout(() => {
            for (var i = 0, j = 10; i < j; i++) {
              this.data.push({name: this.count++ })
            }
            console.log(this.data)
            this.busy = false
          }, 1000)
        }
      }

      效果  默认会载入10行数据,只要往下滚动到页面底部,就会在1秒后再次加载10条,然后继续滚动,又会加载10条,实际情况到一定程度停止刷新

      参数解释

          v-infinite-scroll="loadMore"表示回调函数是loadMore
         infinite-scroll-disabled="busy"表示由变量busy决定是否执行loadMorefalse则执行loadMoretrue则不执行,看清楚,busy表示繁忙,繁忙的时候是不执行的。
         infinite-scroll-distance="10"这里10决定了页面滚动到离页尾多少像素的时候触发回调函数,10是像素值。通常我们会在页尾做一个几十像素高的“正在加载中...”,这样的话,可以把这个div的高度设为infinite-scroll-distance的值即可。

          infinite-scroll-immediate-check 默认值为true,该指令意思是,应该在绑定后立即检查busy的值和是否滚动到底。如果你的初始内容高度不够高、不足以填满可滚动的容器的话,你应设为true,这样会立即执行一次loadMore,会帮你填充一些初始内容。
          infinite-scroll-listen-for-event 当事件在Vue实例中发出时,无限滚动将再次检查。
          infinite-scroll-throttle-delay 检查busy的值的时间间隔,默认值是200,因为vue-infinite-scroll的基础原理就是,vue-infinite-scroll会循环检查busy的值,以及是否滚动到底,只有当:busy为false且滚动到底,回调函数才会执行


      
  • 相关阅读:
    Android核心分析之十七电话系统之rilD
    Android核心分析之十六Android电话系统-概述篇
    Android核心分析之十五Android输入系统之输入路径详解
    Android核心分析之十四Android GWES之输入系统
    Android 核心分析之十三Android GWES之Android窗口管理
    Android 核心分析之十二Android GEWS窗口管理之基本架构原理
    Android核心分析 之十一Android GWES之消息系统
    Android核心分析 之十Android GWES之基本原理篇
    Android核心分析 之九Zygote Service
    Android 核心分析 之八Android 启动过程详解
  • 原文地址:https://www.cnblogs.com/ttjm/p/11714757.html
Copyright © 2011-2022 走看看