vue-Scroller上拉加载,下拉刷新 及 element-ui分页的使用

1.官方文档地址

vue-Scroller github地址:https://github.com/wangdahoo/vue-scroller
element分页地址:https://element.eleme.io/#/zh-CN/component/pagination
移动端上拉加载,下拉刷新,及分页是基本业务场景中常见的需求,

2.vue-Scroller的使用

2.0.1 npm 安装

npm i vue-scroller -S

2.0.2 main.js全局引入

import VueScroller from 'vue-scroller'
Vue.use(VueScroller)

2.0.3 基本使用
2.0.3.1 结构

//on-refresh 对应下拉回调  on-infinite 对应上拉回调
 <scroller :on-refresh="reffor" :on-infinite="inffor" ref="scrfor">
        <div class="list" v-for="(item,i) in nodelist" :key="i">
            <ul>
               这里业务所需要的循环结构
              </ul>
          </div>
      <div style="height:100px">
            	这里的空div是占坑,解决了高度提不上去的问题
       </div>
 </scroller>

2.0.3.2 js 代码

//参数说明(需要data定义) pagesize当前页数,pSize;
    //每页下拉条数pagemax:最大页数nodelist:循环数组
    // 下拉刷新
    reffor() {
      this.pagesize = 1; //重置页数刷新每次页数都是第一页
      setTimeout(
        function() {
          this.$axios
            .post("接口地址", {
              pIndex: this.pagesize,
              pSize: 5
            })
            .then(response => {
              if (response.data.code == 1000) {
                // console.log(data);
                //这一步是判断你当前请求的这一页数据是不是最后一页,如果是最后一页
                //就不能请求了(这个根据后端给的接口判断,只要能判断出就行了,
                this.pagemax = response.data.data.pageData.totalPage;
                // 判断是下拉刷新还是上拉加载(这一步也是比较巧妙的,当然也很好理解)
                if (this.pagesize == 1) {
                  this.nodelist = response.data.data.pageData.pageList;
                } else {
                  this.nodelist = this.nodelist.concat(
                    response.data.data.pageData.pageList
                  );
                }
              }
            })
            .catch(err => {});
          this.$refs.scrfor.finishPullToRefresh(); //刷新完毕关闭刷新的转圈圈
        }.bind(this),
        1700
      );
    },
    // 上拉加载
    inffor(done) {
      if (this.pagesize >= this.pagemax) {
        this.$refs.scrfor.finishInfinite(true); //这个方法是不让它加载了,显示“没有更多数据”,要不然会一直转圈圈
      } else {
        setTimeout(() => {
          this.pagesize++; //下拉一次页数+1
          this.$axios
            .post("接口地址", {
              pIndex: this.pagesize,
              pSize: 5
            })
            .then(response => {
              console.log(response);
              if (response.data.code == 1000) {
                // console.log(data);
                //这一步是判断你当前请求的这一页数据是不是最后一页,如果是最后一页就不能请求了
                //(这个根据后端给的接口判断,只要能判断出就行了,
                this.pagemax = response.data.data.pageData.totalPage;
                // 判断是下拉刷新还是上拉加载(这一步也是比较巧妙的,当然也很好理解)
                if (this.pagesize == 1) {
                  this.nodelist = response.data.data.pageData.pageList;
                } else {
                  this.nodelist = this.nodelist.concat(
                    response.data.data.pageData.pageList
                  );
                }
              }
            })
            .catch(err => {});
          done(); //进行下一次加载操作
        }, 1500);
      }
    }

2.0.4 注意

vue-Scroller组件需要用大盒子包裹 ,部分使用时可能会出现循环结构飘起,需要给定位解决,上拉及下拉请求必须结合定时器完成,

3.分页的使用

3.0.1结构


<el-pagination
        layout="prev, pager, next"  //组件布局
        @current-change="dateChangebirthday"   //改变是触发的函数
        :page-size="10"	//每页显示的数据
        :total="totalCount"	//总页数
        style="float:right;"	
 ></el-pagination>

3.0.2 js代码

 dateChangebirthday(val) {
 //val 对应着页数编号
 //pIndex 对应当前页数
      this.data_release.pIndex= val;
      this.getUsers_release_info()  
      //getUsers_release_info() 这里是获取总列表的数据
    },

3.0.3 注意
在向后台获取总列表数据时需要将总条数,赋值给totalCount,在做el-table时需要将每页显示条数跟pIndex保持一致

  • 5
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
vue-virtual-scroller是一个用于Vue.js的虚拟滚动组件,它可以实现高性能的长列表渲染。下面是使用vue-virtual-scroller实现下拉加载的步骤: 1. 首先,安装vue-virtual-scroller依赖: ```shell npm install vue-virtual-scroller -d ``` 2. 在你的Vue组件中引入vue-virtual-scroller: ```javascript import { RecycleScroller } from 'vue-virtual-scroller'; import 'vue-virtual-scroller/dist/vue-virtual-scroller.css'; export default { components: { RecycleScroller }, // ... } ``` 3. 在模板中使用vue-virtual-scroller组件,并设置相应的属性和事件: ```html <template> <div class="wrapper"> <recycle-scroller :items="items" :item-size="50" :min-item-size="50" :max-item-size="50" :buffer="10" :page-mode="true" @load="loadMore" > <template slot-scope="props"> <!-- 渲染每个列表项的内容 --> <div class="item">{{ props.item }}</div> </template> </recycle-scroller> </div> </template> ``` 4. 在Vue组件的data中定义items数组,并在created钩子函数中初始化items: ```javascript export default { data() { return { items: [] }; }, created() { this.initItems(); }, methods: { initItems() { // 初始化items数组,可以从后端获取数据并赋值给items // 示例:假设从后端获取了10条数据 this.items = Array.from({ length: 10 }, (_, index) => `Item ${index + 1}`); }, loadMore() { // 加载更多数据的逻辑 // 示例:假设每次加载5条数据 const startIndex = this.items.length; const endIndex = startIndex + 5; const newItems = Array.from({ length: 5 }, (_, index) => `Item ${index + startIndex + 1}`); this.items = [...this.items, ...newItems]; } } } ``` 5. 根据你的需求,可以自定义样式来美化滚动区域。 以上是使用vue-virtual-scroller实现下拉加载的基本步骤。你可以根据自己的具体需求进行进一步的定制和优化。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值