插件安装

在项目中引入vue-infinite-scroll

npm install vue-infinite-scroll --save

插件导入VUE组件

引入插件

import infiniteScroll from "vue-infinite-scroll"

导入指令

export default {
        name: "ComFlowList",
        directives: {infiniteScroll},
        data(){}
}

插件状态数据属性定义

定义插件和数据列表所需用到的数据状态属性,如下:

data(){
    return {
        dataList: [],
        dataPageNum: 1,   //列表数据加载页码
        dataPageSize: 20,   //列表数据加载每页条数
        dataLoadStop: false,  //列表数据加载停止状态
        dataLoadNomore: false    //列表数据加载是否完成
    }
}

数据加载方法定义

methods:{
    
    /**
       * 加载列表数据
       */
      loadDataList(){
        //锁定数据加载状态
        this.dataLoadStop = true;

        let requestUrl = this.dataListIntUrl
        this.dataListLoadApi(requestUrl,{
          pid: this.pid,
          cid: this.cid,
          mid: this.mid,
          pagesize: this.dataPageSize,
          pagenum: this.dataPageNum
        })
          .then( function(response) {
            let queryResult = response.data;
            let datas = response.data.list;
            this.dataList = this.dataList.concat(datas);
            if(queryResult.hasnextpage == 1){
              this.dataPageNum += 1
              this.dataLoadStop = false
            }else{
              this.dataNomore = true
            }
          }.bind(this))
          .catch(function (error) { // 请求失败处理
            console.log(error);
            this.dataLoadStop = false
          }.bind(this));
      },

}

在template中使用插件directive

<template>
          <div v-infinite-scroll="loadDataList"
               infinite-scroll-disabled="dataLoadStop"
               infinite-scroll-distance="50">
            <div v-for="(item, idx) in dataList" >
                <div class="comdata"><span>{{item.name}}</span></div>
            </div>
            <div class="list-load-end">
                <span>{{dataNomore ? "--我也是有底线的--" : "加载中..."}}</span>
            </div>
          </div>
</template>

 

GitHub 加速计划 / vu / vue
109
18
下载
vuejs/vue: 是一个用于构建用户界面的 JavaScript 框架,具有简洁的语法和丰富的组件库,可以用于开发单页面应用程序和多页面应用程序。
最近提交(Master分支:3 个月前 )
9e887079 [skip ci] 1 年前
73486cb5 * chore: fix link broken Signed-off-by: snoppy <michaleli@foxmail.com> * Update packages/template-compiler/README.md [skip ci] --------- Signed-off-by: snoppy <michaleli@foxmail.com> Co-authored-by: Eduardo San Martin Morote <posva@users.noreply.github.com> 1 年前
Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐