uni下拉刷新

这个示例展示了如何在Vue.js应用中实现订单列表的分页加载。当订单列表为空时,显示占位图和提示信息。通过`onLoad`和`onReachBottom`事件监听页面加载和滚动到底部,触发加载更多订单。`loadData`方法负责获取数据,并处理分页逻辑。`handlePageData`方法用于合并新加载的数据到现有订单列表。当点击订单项时,根据订单状态跳转至不同的详情页面。
摘要由CSDN通过智能技术生成
<view class="order-list" v-if="orderList.length > 0">
  <order-item
    @tap="toDetail(item)" 
    v-for="item in orderList" 
    :item="item" 
    :key="item.id"></order-item>
</view>
<view class="empty-container" v-else-if="!initLoading">
  <image class="empty-image" src="../../../static/images/empty-order.png"></image>
  <view class="empty-text">暂无待付款订单~</view>
</view>
data() {
  return {
    pageIndex: 1, 
    pageSize: 10,
    initLoading: true,                  // 初始加载数据
    loading: false,                     // 加载更多
    loadingFail: false,                 // 加载失败
    orderList: [],
    pages: {}
  }
},
 onLoad() {
   this.pageIndex = 1
   this.loadData()
 }),
mounted() {
  uni.showLoading()
  this.loadData()
},

onReachBottom() {
  const { pageCount } = this.pages
  // 加载更多
  if(this.pageIndex < pageCount) {
    this.loading = true
    this.pageIndex = this.pageIndex + 1
    this.loadData()
  }
},
methods: {
  // 加载订单数据
  loadData() {
    if(this.initLoading) {
      uni.showLoading()
    }
    const {pageIndex, pageSize, userId, active} = this
    listOrderByPage({
      pageIndex, 
      pageSize, 
      filter_fieldone: userId, 
      filter_fieldtwo: active}).then(res => {
        this.initLoading = false
        const {data, ...pages} = res.response
        uni.hideLoading()
        this.handlePageData(data)
        this.pages = pages   // 记录本次请求的分页参数
        this.loading = false
        this.loadingFail = false
    }).catch(err => {
      uni.hideLoading()
      this.loading = false
      this.loadingFail = true
    })
  }, 
// 处理分页数据
handlePageData(data) {
  const { page = 0, pageSize = 10} = this.pages
  // 比较上一次获取的页码和当前获取数据的页码判断当前需要更新哪部分数据
  if(page >= this.pageIndex) {
    this.orderList = this.orderList.slice(0, (this.pageIndex - 1)*pageSize).concat(data)
  } else {
    this.orderList = this.orderList.concat(data)
  }
},
   // 加载失败后重新加载
reload() {
     this.loading = true
     this.loadingFail = false
     this.loadData()
   } 
,
// 判断当前订单在第几页
checkPage(id) {
  let currentIndex = this.orderList.findIndex(v => v.id == id)
  this.pageIndex = Math.ceil((currentIndex + 1) / this.pageSize)
},
// 去订单详情页
toDetail(item) {
  const {id, refunds_status} = item
  this.checkPage(id)
  if(refunds_status == 1) {
    // 退款订单查看退款成功详情
    uni.navigateTo({
      url: '/pages/message/order/refund?id=' + id
    })
  } else {
    uni.navigateTo({
      url: '/pages/message/order/detail?id=' + id
    })
  }
},
},

 

 

 

 

 

 

 

 

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
uni-app中,可以使用uni.stopPullDownRefresh()方法来停止下拉刷新。这个方法可以在执行完刷新操作后调用,以终止刷新状态。此外,还可以使用mescroll的uni版本来实现下拉刷新和上拉加载的功能。mescroll是一个在uni-app中特别适用的组件,支持一套代码编译到多个平台,包括iOS、Android、H5和小程序等。它已经相当完善和实用,因此推荐使用。如果想在uni-app中实现全局下拉刷新,则需要在pages.json文件中的globalStyle对象中开启enablePullDownRefresh属性。如果只想在特定页面中开启下拉刷新,则可以在pages.json文件中的pages数组中找到对应的页面,并在该页面的style属性中开启enablePullDownRefresh属性。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [uniapp 下拉刷新](https://blog.csdn.net/weixin_51014776/article/details/128346430)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *2* [uniapp几种实现下拉刷新的方式](https://blog.csdn.net/C1091045324/article/details/128000726)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值