搜索列表(三)-页面滚动到底部触发数据加载 & 列表数据累加操作 & 加载完成临界条件处理-数据的长度

页面滚动到底部触发数据加载

  // 监控小程序页面的触底操作,加载下一页数据
onReachBottom () {
  // 滚动条触底的时候触发该方法
  this.loadData()
}
实例
  onReachBottom () {
    // 监控小程序页面的触底操作
    if(this.list.length >= this.total) {
      // 数据加载完成
      this.isFinished = false
      return
    }
    // 加载下一页数据,页码累加操作
    this.pagenum = this.pagenum + 1
    this.loadData()
  },

触底触发

在这里插入图片描述

加载完成

在这里插入图片描述

默认为0页,改为默认第一页pagenum: 1,

  data () {
    return {
      kw: '',
      tabData: ['综合', '销量', '价格'],
      currentIndex: 0,
      // 当前请求的数据页码
      pagenum: 1,
      // 没有显示多少条
      pagesize: 5,
      // 查询结果
      list: [],
      // 列表总数
      total: 0,
      // 判断数据是否加载完成
      isFinished: true,
      // 接口调用的状态为
      isLoading: false
    }
  },

图例

在这里插入图片描述

此时,每页数据单独加载; 如果要处理分页,数据需要进行累加

  methods: {
    async loadData () {
      // 判断当前接口调用是否完成
      if(this.isLoading) {
        // 表示正在发送请求,尚未获取到后台数据
        // 此时应该终止后续请求
        return
      }
      this.isLoading = true
      // 获取列表数据
      // 需要保证:上一次请求加载成功后,才能发送下一个请求
      let res = await request('goods/search', {
        query: this.kw,
        pagenum: this.pagenum,
        pagesize: this.pagesize
      })
      // 如果要处理分页,数据需要进行累加
      this.list = [...this.list, ...res.goods]
      this.total = res.total
      // 获取到后台返回数据之后,才允许再次发送新的请求
      this.isLoading = false
    },
    handleChange (e) {
      // 控制选项卡切换
      this.currentIndex = e.target.dataset.index
    }
  },

累加加载数据

在这里插入图片描述

判断加载的临界状态:加载完后,数据不再请求,加载更多消失

结构

    <!-- 加载更多提示  默认显示   -->
    <div class="more" v-if='isFinished'>加载更多...</div>

数据

import request from '../../utils/request.js'

export default {
  data () {
    return {
      kw: '',
      tabData: ['综合', '销量', '价格'],
      currentIndex: 0,
      // 当前请求的数据页码
      pagenum: 1,
      // 没有显示多少条
      pagesize: 5,
      // 查询结果
      list: [],
      // 列表总数
      total: 0,
      // 判断数据是否加载完成
      isFinished: true,
      // 接口调用的状态为
      isLoading: false
    }
  },
    onReachBottom () {
    // 监控小程序页面的触底操作
    if(this.list.length >= this.total) {
      // 数据加载完成  不显示
      this.isFinished = false
      return
    }
    // 加载下一页数据,页码累加操作
    this.pagenum = this.pagenum + 1
    this.loadData()
  },
}

限定请求

在这里插入图片描述

关键操作

1、列表结果数据,累加操作

2、加载完成,临界条件处理

3、页码累加操作

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值