前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【Uniapp小程序】实现上滑加载分页(触底加载)附后端Thinkphp代码

【Uniapp小程序】实现上滑加载分页(触底加载)附后端Thinkphp代码

作者头像
德宏大魔王
发布2023-08-08 15:07:15
1.2K0
发布2023-08-08 15:07:15
举报
文章被收录于专栏:cloud stdio

分析说明

后端

代码语言:javascript
复制
 $query_total=DB::table('book')->where(["class_id"=>$class_id])->paginate($per_page);
 查询符合条件的总记录总数
 $class=DB::table('book')->where(["class_id"=>$class_id])->limit($page,$per_page)->select();
 查询limit限制后的数据
 注意:thinkphp中 limit(a,b)表示从第a行的b条数据 
代码语言:javascript
复制
 //依据分类查询图书
    public function query_book_by_classid(){
        $token=input('token');
        $class_id=input('class_id');
        $page=input('page');//起始行
        $per_page=input('per_page');//每页数据
       
        
        $redis = new Redis();
        $result= $redis->get($token);
       if ($result) {
        //   limit(a,b)从第a行的b条数据 
              $query_total=DB::table('book')->where(["class_id"=>$class_id])->paginate($per_page);
              $class=DB::table('book')->where(["class_id"=>$class_id])->limit($page,$per_page)->select();
              $coun=ceil($query_total->total()/$per_page);
      
        die(
        json_encode(
            array(
            'code' => 200,
            'total' => $coun,
            'data' => $class,
            'msg' => '获取成功'
        ),480)
);
       } 
       else {
           die(
        json_encode(
            array(
            'code' => 100,
            'data'=>'',
            'msg' => 'token失效或不存在!请重新获取'
        ),480)
);
       }
        
    }

小程序端

实现触底加载我们需要用到onReachBottom方法

代码语言:javascript
复制
	onReachBottom() {
		console.log("我被触发了");
		},
代码语言:javascript
复制
<script>
	export default {
		data() {
			return {
				
				
				// 商品数据
				goodsList:[],
				loadText:"",
				loadSwitch:false,
				// 分页信息
				total:"",//总页数
				page:0,//起始页
				per_page:6,//每页显示
			}
		},
		onReachBottom() {
			// 如果当前页数大于等于总页数,状态修改为没有更多了,不再继续往下执行代码
						uni.showLoading({
							title:'加载中..'
						})
					if(this.loadSwitch){
						this.loadSwitch = false;
						this.page = this.page+this.per_page;//页面新增一页
					setTimeout(() => {
						this.getGoodsList(this.tabs2[0]['id']);
						
					}, 1200);	
					}else{
						uni.hideLoading()
					}
				},
		onLoad() {
			
			this.get_book_class();
			
			setTimeout(() => {
				this.getGoodsList(this.tabs2[0]['id']);			
				console.log(this.tabs2[0]['id'])
			}, 1100);
			
		},
		methods: {
			getGoodsList(ee){
				console.log("默认得到的分类id"+ee)
							this.loadText = "加载中";
							uni.request({
								url: 'https://xxxxx/index.php/index/Api/query_book_by_classid', //仅为示例,并非真实接口地址。
								data: {
								    token:uni.getStorageSync('token'),
									class_id:ee,
									page:this.page,
									per_page:this.per_page
								},
								method: 'POST',
								header: {
								    'content-type': 'application/x-www-form-urlencoded' //自定义请求头信息
								},
								success: (res) => {
									this.goodsList = this.goodsList.concat(res.data.data);
									var total=res.data.total;
									if(this.page >= total) {
										this.loadSwitch = false;
										this.loadText = "没有啦~";
										uni.hideLoading()
									}else{
									setTimeout(()=>{
										this.loadText = "上拉加载更多";
										this.loadSwitch = true;
										uni.hideLoading()
									},200);
								
									}
										}
							})
						},
			get_book_class(){
				let url = 'https://xxxxx/index.php/index/Api/query_class';
					uni.request({
						url,
						data: {
						   token:uni.getStorageSync('token')
						},
						method:'GET',
						success: (res) => {
							
							console.log(res.data)
							if (res.data.code==200) {
								console.log(res.data.data.length)
								for(let i = 0;i<res.data.data.length;i++){
									this.tabs2.push(res.data.data[i]);
								}
							} else{
								uni.showToast({
									title:res.data.msg,
									icon:'none'
								})
							}
							}
					})
				
			},
			onTabs2Change(index){
				// 设置激活
				console.log(index)
				this.tabs2Current = index;
				// 设置滚动位置
				let into = 0;
				if(this.tabs2.length - 2 < index){
					into = this.tabs2.length - 1;
				}else if(index > 1){
					into = index - 2;
				}
				this.tabs2IntoView = `tabs-${into}`
			}
		}
	}
</script>

代码成品

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2023-03-02,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 分析说明
    • 后端
      • 小程序端
      • 代码成品
      相关产品与服务
      云数据库 Redis
      腾讯云数据库 Redis(TencentDB for Redis)是腾讯云打造的兼容 Redis 协议的缓存和存储服务。丰富的数据结构能帮助您完成不同类型的业务场景开发。支持主从热备,提供自动容灾切换、数据备份、故障迁移、实例监控、在线扩容、数据回档等全套的数据库服务。
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档