首页 > 其他分享 >uni-app:使用uni-list显示列表数据之三:上拉加载更多(hbuilderx 3.6.18)

uni-app:使用uni-list显示列表数据之三:上拉加载更多(hbuilderx 3.6.18)

时间:2023-02-14 14:24:07浏览次数:60  
标签:function console log 18 app res currentPage uni

一,代码:

<template>
    <view>
        <uni-list >
            <uni-list-item :border="false" v-for="(item, index) in itemList" :key="index">
                <template v-slot:body >
                    <view @click="goItem(item.id)" v-if="item.id==5" style="border-radius: 20rpx; min-height:160rpx;margin-top:20rpx;width:690rpx;margin-left:30rpx;margin-right:30rpx;background: #ffeeee;display: flex;flex-direction: row;" >
                      <image style="width: 100%;" mode="aspectFit" src="https://imgs.lhdtest.com/ware/sowhatimg/ware/orig/2/39/39383.jpg" />
                    </view>
                    
                    <view @click="goItem(item.id)" v-else style="border-radius: 20rpx; min-height:160rpx;margin-top:20rpx;width:690rpx;margin-left:30rpx;margin-right:30rpx;background: #efefef;display: flex;flex-direction: row;" >
                        <view style="width:490rpx;padding-left: 20rpx;padding-right: 20rpx;">
                            <view style="height:100%;width:510rpx;display: flex;flex-direction: column;justify-content: center;">
                                {{item.title}}
                            </view>
                        </view>
                        <view style="width:200rpx;display: flex;flex-direction: column;justify-content: center;">
                            {{item.author}}
                        </view>
                    </view>
                </template>
            </uni-list-item>
            <uni-load-more :showIcon="true" :showText="true" :status="loadStatus" ></uni-load-more>
        </uni-list>
    </view>
</template>

<script>
    export default {
        data() {
            return {
                itemList:[],      //列表项数组
                isLoading:false,  //是否加载中
                currentPage:1,    //当前页
                totalPage:1,      //总页数
                loadStatus:"loading",   //uni-load-more的状态
            }
        },
        methods: {
            //上拉加载更多
            loadMore:function() {
                if (this.currentPage < this.totalPage) {
                    if(!this.isLoading){  //此处判断,上锁,防止重复请求
                          this.isLoading=true;       
                          this.currentPage+=1;
                          this.loadStatus = "loading";
                          this.getList();
                     }
                }
            },
            //下拉刷新
            refreshData:function(){
                if (this.isLoading == false) {
                    this.isLoading = true;
                    this.itemList = [];
                    this.currentPage = 1;
                    this.totalPage = 1;
                    this.loadStatus = "loading";
                    this.getList();
                }
            },
            //跳转到详情页
            goItem:function(id) {
                alert(id);
            },
            
            //访问接口
            getList:function() {
            uni.request({
                url:'/api/item/list?page='+this.currentPage,
                method:'get',
            }).then((result)=>{
                let [error,res] = result;
                //result将返回一个数组[error,{NativeData}]
                if(res.statusCode === 200){
                    console.log(res.data);
                    //总页数
                    this.totalPage = res.data.data.total;
                    //把接口返回的数组合并到本地
                    this.itemList=this.itemList.concat(res.data.data.list);
                    console.log(this.itemList);
                }
                if(res.statusCode === 404){
                    console.log('请求的接口没有找到');
                }
                
                this.isLoading=false;
                if (this.currentPage >= this.totalPage){
                    this.loadStatus = "noMore";
                }

               //访问接口返回结果后,停止下拉刷新的动画
                setTimeout(() => {
                    console.log('定时结束');
                    uni.stopPullDownRefresh();
                }, 500);
            })
            },
            //加载时访问接口得到数据
            onl oad: function(options) {
                  // 页面创建时执行
                  console.log("页面加载");
                  this.getList();
              },
              onShow: function() {
                console.log("页面进入");
              },
              onReady: function() {
                console.log("页面首次渲染完毕时执行");
              },
              onHide: function() {
                console.log("页面离开");
              },
              onPullDownRefresh: function() {
                //在pages.json中设置enablePullDownRefresh为true开启下拉
                console.log("下拉刷新触发");
                this.refreshData();
              },
              onReachBottom: function() {
                // 页面触底时执行
                console.log("下拉到底");
                 this.loadMore();
              },
              onPageScroll: function() {
                console.log("页面滚动时执行");
              },
             onResize: function() {
                console.log("屏幕旋转触发");
              }
        }
    }
</script>

<style lang="scss">
    /* 取消各item的padding */
    /deep/ .uni-list-item__container {
        position: relative;
        display: flex;
        flex-direction: row;
        padding: 0px 0px;
        padding-left: 0px;
        flex: 1;
        overflow: hidden;
    }
</style>

说明:刘宏缔的架构森林是一个专注架构的博客,地址:https://www.cnblogs.com/architectforest

         对应的源码可以访问这里获取: https://github.com/liuhongdi/
         或: https://gitee.com/liuhongdi

说明:作者:刘宏缔 邮箱: [email protected]

二,测试效果

三,查看hbuilderx的版本: 

 

标签:function,console,log,18,app,res,currentPage,uni
From: https://www.cnblogs.com/architectforest/p/17119423.html

相关文章

  • 直播app源码,给elementUI的table表头添加按钮或者多选框
    直播app源码,给elementUI的table表头添加按钮或者多选框<el-table-column   prop="date"   :render-header="renderHeader"></el-table-column>methods:{  r......
  • unity Android 可后台替换图片
    usingSystem.Collections;usingSystem.Collections.Generic;usingSystem.IO;usingUnityEngine;usingUnityEngine.Networking;usingUnityEngine.UI;usingUnit......
  • Killer Problem (UVA 11898 )
    Problem YouaregivenanarrayofNintegersandQqueries.Eachqueryisaclosedinterval[l,r].Youshouldfindtheminimumabsolutedifferencebetween......
  • 畅通工程续(HDU 1874)(简单最短路)
    某省自从实行了很多年的畅通工程计划后,终于修建了很多路。不过路多了也不好,每次要从一个城镇到另一个城镇时,都有许多种道路方案可以选择,而某些方案要比另一些方案行走的......
  • 终于找到适用任何App的小程序游戏上架途径
    去年又一小游戏的爆火让不少开发者心痒痒,纷纷动手开始探索小程序游戏的开发之路。除了在微信、支付宝、抖音等各大平台上架小程序游戏外,不少开发者们还希望让自己的App也......
  • Unity 转小游戏
    填写appid和游戏资源位置在导出的项目里可以修改游戏资源位置两个目录minigame是小程序打开的目录webgl是要下载的的资源下载一个http服务器就有了和JS交互大部......
  • Unicorn 初探
    前言笔者由于对IOT比较感兴趣,故经常需要模拟一些IOT的固件,之前我习惯直接直接使用qemu对固件进行模拟。这几天由于任务需要接触了一下unicorn,一个轻量级,多平台,多架构......
  • SQL Server 只有数据库文件,没有日志文件,恢复数据时报1813错误的解决方案
    无法打开新数据库'ASR'。CREATEDATABASE中止。文件激活失败。物理文件名称'E:\SqlServer\MSSQL\Data\ASR_log.LDF'可能不正确。无法重新生成日志,原因是数据库关闭时存......
  • Unity导出web浏览器运行的WebGL操作
    前提:1.Unity2020.3的编辑器+项目需要再Unity编辑器执行不报错2.系统win103.浏览器使用  或  导出:1.下载WebGL支持        ......
  • unity 保持物体大小不变
    ///<summary>///在透视投影时,改变相机的fov或物体的位置,让物体保持在屏幕上看起来的大小一样的缩放值///</summary>///<returns></returns>p......