vue-分页,上拉刷新,下拉加载更多-简单版

这里会用到vue的scroll插件,因为用的比较多就在main.js中引用了,别忘安装依赖
npm install vue-scroller -d
在这里插入图片描述

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

下面放代码

<template>
  <div class="takeout-box">
    <scroller
      delegate-id="myScroller"
      :on-refresh="refresh"
      :on-infinite="infinite"
      ref="myscroller"
      class="scroller-box"
    >
      <div class="item-order" v-for="item in orederList">
        <div class="oreder-top">
          <span class="order-of-times">订单编号:{{item.orderUuid }}</span>
          <i class="price-num">{{item.courierGetMoney}}</i>
        </div>
        <div class="order-infos">
          <div class="infos-box">
            <div class="take-title">
              <img src="../../assets/icon/组 10.png" />
              <h2>{{item.shopAddress }}</h2>
            </div>
            <div class="send-title">
              <img src="../../assets/icon/组 10 (1).png" />
              <div class="sebd-infos">
                <h2>{{item.userAddress }}</h2>
                <div class="person-title">
                  <span>{{item.userName }}</span>
                  <b>|</b>
                  <span>{{item.userPhone }}</span>
                  <img src="../../assets/icon/图层 207.png" />
                </div>
              </div>
            </div>
          </div>
        </div>
        <div class="remark remark-of">
          <img src="../../assets/icon/组 30.png" />
          <span>{{item.remark }}</span>
        </div>
      </div>
     //如果没有数据就给用户显示为一张没有数据的图片
      <div class="nothing" v-if="orederList.length<=0">
        <img src="../../assets/icon/暂无记录.png" />
      </div>
    </scroller>
  </div>
</template>

<script>
import { mySendOrderApi } from "../../api/api";
export default {
  name: "Completed",
  data() {
    return {
      orederList: [],
      page: {
        page: 1, //当前页
        total: 1, //总页数
        pageSize: 10
      }
    };
  },
  mounted() {
    this.allOrderList();
  },
  methods: {
    //获取初始数据
    allOrderList() {
      let that = this;
      mySendOrderApi({
        orderStatus: 6,
        page: this.page.page,
        rows: this.page.pageSize
      }).then(res => {
        let dataRes = res.data.data;
        that.page.total = dataRes.total;
        if (res.data.result != 0) {
          Toast(res.data.msg);
        } else if (that.page.page == 1) {
          that.orederList = dataRes.items;
          // console.log(dataRes.pageCount);
        } else {
          that.orederList = that.orederList.concat(dataRes.items);
        }
      });
    },
    // 下拉刷新
    refresh() {
      this.page.page = 1;
      setTimeout(
        function() {
          this.allOrderList();
          console.log("我是上拉加载0");
          this.$refs.myscroller.finishPullToRefresh(); //刷新完毕关闭刷新的转圈圈
        }.bind(this),
        700
      );
    },
    // 上拉加载
    infinite(done) {
      if (this.page.page >= this.page.total) {
        //若当前页码大于或等于总页码,则不再加载数据,提示没有更多数据
        this.$refs.myscroller.finishInfinite(true); //这个方法是不让它加载了,显示“没有更多数据”,要不然会一直转圈圈
      } else {
        setTimeout(() => {
          this.page.page++; //下拉一次页数+1
          this.allOrderList();
          done(); //进行下一次加载操作
        }, 1500);
      }
    }
  }
};
</script>

后端返回的数据

  • 1
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 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、付费专栏及课程。

余额充值