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

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

分析说明

后端

$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条数据
//依据分类查询图书
    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方法

onReachBottom() {
    console.log("我被触发了");
    },
<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>

代码成品

相关文章
|
14天前
|
jenkins Java 测试技术
如何使用 Jenkins 自动发布 Java 代码,通过一个电商公司后端服务的实际案例详细说明
本文介绍了如何使用 Jenkins 自动发布 Java 代码,通过一个电商公司后端服务的实际案例,详细说明了从 Jenkins 安装配置到自动构建、测试和部署的全流程。文中还提供了一个 Jenkinsfile 示例,并分享了实践经验,强调了版本控制、自动化测试等关键点的重要性。
47 3
|
15天前
|
小程序 前端开发 算法
|
19天前
|
数据库 开发者
后端开发的哲学:代码与人生的交织
在数字化的时代,后端开发不仅仅是技术的堆砌,它更像是一场深刻的人生修炼。本文将探讨后端开发中蕴含的哲理,以及这些哲理如何影响我们的职业生涯和人生观。我们将从代码的本质出发,逐步深入到人生的意义,最终理解为何“你必须成为你希望在世界上看到的改变。”
|
1月前
|
机器学习/深度学习 PyTorch 算法框架/工具
揭秘深度学习中的微调难题:如何运用弹性权重巩固(EWC)策略巧妙应对灾难性遗忘,附带实战代码详解助你轻松掌握技巧
【10月更文挑战第1天】深度学习中,模型微调虽能提升性能,但常导致“灾难性遗忘”,即模型在新任务上训练后遗忘旧知识。本文介绍弹性权重巩固(EWC)方法,通过在损失函数中加入正则项来惩罚对重要参数的更改,从而缓解此问题。提供了一个基于PyTorch的实现示例,展示如何在训练过程中引入EWC损失,适用于终身学习和在线学习等场景。
60 4
揭秘深度学习中的微调难题:如何运用弹性权重巩固(EWC)策略巧妙应对灾难性遗忘,附带实战代码详解助你轻松掌握技巧
|
1月前
|
jenkins Java 测试技术
如何使用 Jenkins 自动发布 Java 代码,通过一个电商公司后端服务的实际案例详细说明
【10月更文挑战第8天】本文介绍了如何使用 Jenkins 自动发布 Java 代码,通过一个电商公司后端服务的实际案例,详细说明了从 Jenkins 安装配置到自动构建、测试和部署的全流程。文中还提供了一个 Jenkinsfile 示例,并分享了实践经验,强调了版本控制、自动化测试等关键点的重要性。
34 5
|
1月前
|
开发框架 小程序 JavaScript
小程序代码丢失!反编译找回
小程序源代码的容易获取问题确实存在一些潜在的安全隐患。然而,现在的小程序开发框架采用像 Babel 这样的打包工具,将 JavaScript 逻辑代码混合在一个文件中并进行转编译,使其变得难以理解。
37 0
小程序代码丢失!反编译找回
|
1月前
|
缓存 小程序 UED
如何利用小程序的生命周期函数实现数据的加载和更新?
如何利用小程序的生命周期函数实现数据的加载和更新?
59 4
|
1月前
|
前端开发 Java
学习SpringMVC,建立连接,请求,响应 SpringBoot初学,如何前后端交互(后端版)?最简单的能通过网址访问的后端服务器代码举例
文章介绍了如何使用SpringBoot创建简单的后端服务器来处理HTTP请求,包括建立连接、编写Controller处理请求,并返回响应给前端或网址。
53 0
学习SpringMVC,建立连接,请求,响应 SpringBoot初学,如何前后端交互(后端版)?最简单的能通过网址访问的后端服务器代码举例
|
27天前
|
存储 数据管理 API
零代码能力:轻松搞定表单和API接口,少写80%后端代码,内含资源
小白接口(果创云 YesApi.cn)是一个零代码和低代码开发平台,提供一站式后端云服务,帮助开发者、学生、业余爱好者、工作室、中小企业及无IT技术人员的传统企业快速搭建应用、接口、服务和网站。平台提供500+免费API接口,支持在线API开发、在线表单、数据库管理、图片文件存储、会员管理等功能,无需后端开发经验,轻松实现数据处理和应用开发。
|
2月前
|
SQL JSON Java
springboot 如何编写增删改查后端接口,小白极速入门,附完整代码
本文为Spring Boot增删改查接口的小白入门教程,介绍了项目的构建、配置YML文件、代码编写(包括实体类、Mapper接口、Mapper.xml、Service和Controller)以及使用Postman进行接口测试的方法。同时提供了SQL代码和完整代码的下载链接。
springboot 如何编写增删改查后端接口,小白极速入门,附完整代码