小程序云开发入门——分页加载数据(1)

news/2024/7/20 3:31:30 标签: 小程序, 云开发, javascript

目录

目录

修改数据表的权限并请求数据

 通过按钮点击展示分页效果

 把请求到的数据展示在页面上

在下拉触底的时候做分页加载

设置数据加载中和加载完毕的提示

 完整代码展示:


修改数据表的权限并请求数据

1.准备工作:新建fenye页面,并导入之前的108条数据

2.改权限

 3.初步获取数据,数据库只能加载20条

javascript">
Page({
    onLoad: function (options) {
        wx.cloud.database().collection('num').get()
        .then(res=>{
            console.log('成功了',res)
        })
        .catch(err=>{
            console.error('失败了',err)
        })
    }

 通过按钮点击展示分页效果

1.设置了三个按钮,不同值,同一个点击事件触发分页

<button bindtap="getData" data-page="1">加载第一页</button>
<button bindtap="getData" data-page="2">加载第二页</button>
<button bindtap="getData" data-page="3">加载第三页</button>

2.利用按钮传回来的值和skip()方法实现动态分页

javascript">Page({
    getData(e){
        console.log(e.currentTarget.dataset.page)//1 2 3
        let page=e.currentTarget.dataset.page-1
        wx.cloud.database().collection('num')
        .skip(20*page)
        .get()
        .then(res=>{
            console.log('成功了',res)
        })
        .catch(err=>{
            console.error('失败了',err)
        })
        
    }

点击加载第二页(21-40)的效果

 把请求到的数据展示在页面上

1.wxml文件遍历列表

<view wx:for="{{list}}">
    <view class="num">
    {{item.num}}
    </view>
</view>

2.设置num的样式

.num{
    height: 50px;
    background-color: greenyellow;
    border-bottom: 1px solid black;
}

3.初始化列表并获取数据

javascript">Page({
    data:{
        list:[]
    },
    onLoad: function (options) {
        this.getList()
    },
    getList(){
        wx.cloud.database().collection('num')
       // .skip(40)
        .get()
        .then(res=>{
            console.log('成功了',res)
            this.setData({
                list:res.data
            })
        })
        .catch(err=>{
            console.error('失败了',err)
        })

    }

显示效果:只能看得到前20条数据

在下拉触底的时候做分页加载

因为一次只能展示20条数据,所以定义全局变量page,初始化为0,每下滑一次,page++

 

 显示效果:但并不能保留之前的数据

添加contact()方法在每一次分页加载的时候保留之前的数据

实现效果:

 

 精进代码——每划一下就更新数据,不局限于一次加载20条,将全局变量page改为list的长度

javascript">Page({
    data:{
        list:[]
    },
    onLoad: function (options) {
        this.getList()
    },
    getList(){
        let len=this.data.list.length
        console.log('当前list的长度',len)
        wx.cloud.database().collection('num')
        .skip(len)
        .get()
        .then(res=>{
            console.log('成功了',res)
            this.setData({
                //concat方法能将之前res.data里的数据附着在现在的data后面
                list:this.data.list.concat(res.data)
            })
        })
        .catch(err=>{
            console.error('失败了',err)
        })

    },
    /**
     * 页面上拉触底事件的处理函数
     */
    onReachBottom: function () {
        this.getList()
    },

})

设置数据加载中和加载完毕的提示

加载完毕:

 

 加载中:showLoading()和hideLoading()

 完整代码展示:

javascript">Page({
    data: {
        list: []
    },
    onLoad: function (options) {
        this.getList()
    },
    getList() {
        wx.showLoading({
          title: '加载中....',
        })
        let len = this.data.list.length
        console.log('当前list的长度', len)
        wx.cloud.database().collection('num')
            .skip(len)
            .get()
            .then(res => {
                wx.hideLoading()//  加载成功就隐藏加载中
                console.log('成功了', res)
                let dataList = res.data//加载最后一页会返回空数据,dataList数组长度为0
                if (dataList.length <= 0) {
                    wx.showToast({
                        icon: 'none',
                        title: '没有更多数据了',
                    })
                }
                this.setData({
                    //concat方法能将之前res.data里的数据附着在现在的data后面
                    list: this.data.list.concat(res.data)
                })
            })
            .catch(err => {
                console.error('失败了', err)
            })

    },
    /**
     * 页面上拉触底事件的处理函数
     */
    onReachBottom: function () {
        this.getList()
    },

})


http://www.niftyadmin.cn/n/1243408.html

相关文章

【转载】Android功耗改进

原文地址&#xff1a;《Android功耗改进》 by 保罗的酒吧 最近几年中&#xff0c;Google在一直极力的改进Android系统的续航能力。在本文中&#xff0c;我们将看到Andrdoi自5.0到8.0这几个版本中对于功耗方面的改进。 前言 移动设备的续航时间无疑是所有用户都非常在意的。我们…

小程序云开发入门——分页加载数据(2)

用云函数做分页加载 1.新建一个fenyeyun的页面和一个fenye的云函数 2.wxml和wxss与上一节小程序的分页加载代码一样 <view wx:for"{{list}}"><view class"num">{{item.num}}</view> </view> .num{height: 50px;background-colo…

【我的Android进阶之旅】解决 Exported receiver/service does not require permission

一、问题描述 最近切换到一个新的项目中,查看代码的时候,发现AndroidManifest.xml清单文件有一堆的警告 Service警告 <serviceandroid:name=".oyp.CSDNService"android:enabled="true"

Day1.MarkDown学习

MarkDown学习 标题 一级标题&#xff1a;# 空格 内容 二级标题&#xff1a;# # 空格 内容 三级标题&#xff1a;### 空格 内容 四级标题&#xff1a;#### 空格 内容 五级标题&#xff1a;##### 空格 内容 六级标题&#xff1a;###### 空格 内容 &#xff08;最高…

【git学习】GitLab如何创建Merge Request Templates?

一、需求描述 通常在GitLab中使用提交request或者加issue的过程中&#xff0c;都会遇到每次填写相似内容的情况&#xff0c;而且一般团队为了规范&#xff0c;发起Merge Request都需要写固定的格式。 如下所示&#xff0c;GitLab中有没有提供可以解决这一个问题的方案呢&…

小程序云开发入门——搜索功能

导入数据源并实现精准搜索功能 1.事先准备好新闻数据&#xff0c;并修改数据权限 2.精准搜索采用where语句 Page({onLoad(){wx.cloud.database().collection(news).where({title:谷爱凌是谁}).get().then(res>{console.log(请求到的数据,res)})} }) 3.搜索结果 模糊搜索单…

【神兵利器】你绝对想不到VSCode 也可以画流程图了!

一、描述 技术人员一般需要具备一定得画图能力&#xff0c;特别是架构师&#xff0c;需要画各种图&#xff1a;除了让架构更清晰&#xff0c;方便给别人讲解&#xff0c;也是装逼神器~ 1.1 ProcessOn 之前都是在 ProcessOn 上画流程图&#xff0c; 绘制流程图页面 但是免费…

Day1.Dos的基本操作

Dos的基本操作 打开CMD的方式 1.开始系统命令提示符 2.win键R 输入cmd打开控制台&#xff08;推荐使用&#xff09; 3.在任意文件夹下&#xff0c;按住shift鼠标右键 点击&#xff0c;在此处打开命令窗口 4.资源管理器的地址栏前面加上cmd空格 路径 管理员方式运行&#…