百度小程序实现上拉分页加载

百度小程序实现上拉分页加载

1.swan代码
 swan代码注释:
            1.在需要滚动的盒子外面加上scroll-view标签,标签上绑定scroll-y lower-threshold="10" bind:scrolltolower="lower"三个属性和方法;
            2.<view class="btm-nomore" s-if="{{nomore!=2}}">{{nomore==1?'':nomore==3?'没有更多数据了~':' '}}</view>
              是最后接口数据数据为空时的友情提示
//标签上绑定scroll-y lower-threshold="10" bind:scrolltolower="lower"三个属性和方法;
<scroll-view class="thematic-box" scroll-y lower-threshold="10" bind:scrolltolower="lower">
    <view class="themctic_great">
        <view class="thematic">
            <view class="viewli" s-for="list" data-id="{{item.id}}" bindtap="toZtPage">{{ item.name }}</view>
        </view>
    </view>
    //是最后接口数据数据为空时的友情提示
    <view class="btm-nomore" s-if="{{nomore!=2}}">{{nomore==1?'':nomore==3?'没有更多数据了~':' '}}</view>
</scroll-view>
2.css代码
.themctic_great{
    width: 750rpx;
    background-color: #F7F7F7;
}
.thematic{
    width: 750rpx;
    display: flex;
    flex-wrap: wrap;
    justify-content: space-between;
    padding: 30rpx 30rpx 0rpx 30rpx;
    box-sizing: border-box;
}
.viewli{
    width: 330rpx;
    height: 80rpx;
    line-height: 80rpx;
    background-color: #fff;
    border-radius: 8rpx;
    margin-bottom: 20rpx;
    color: #333333;
    text-align: center;
    font-size: 28rpx;
    font-weight: 500rpx;
}
.thematic-box{
    background-color: #F7F7F7;
    overflow-x: hidden;
    overflow-y: auto;
    box-sizing: border-box;
    overflow: hidden;
    position: absolute;
    left: 0;
    top: 0;
    right: 0;
    bottom: 100rpx;
}
.btm-nomore{
    display: block;
    width: 100%;
    height: 60rpx;
    line-height: 60rpx;
    font-size: 24rpx;
    color: #999;
    text-align: center;
}
3.js代码
import { thematicList } from '../../../utils/api.js'
var canUseReachBottom = true;    //这句状态
Page({
    data: {
       //定义这些变量,数组
       list:[],
        page: 1,
        pageCurrent: '',
        page_total_number: '',
        nomore: 2,
    },
    onLoad: function () {
        // 监听页面加载的生命周期函数
        this.thematicList()    //这句调用请求接口的函数方法
    },
    //请求接口的函数
    thematicList: function() {
        thematicList(
            '/bd/v1/thematic/tulist',
            {
                page: this.data.page      //传的参数,默认一页
            }
        ).then(data => {
        //请求成功时
            if(data.error_code === 0){
               //将接口数据这样concat给数组
                let list = this.data.list.concat(data.data.list)
               // 更新接口返回的数量字段
                this.setData({
                    list: list,
                    pageCurrent: data.data.page.page_current,
                    page_total_number: data.data.page.page_total_number
                })
                //tdk接口返回的,没有就不写
                swan.setPageInfo({
                    title: data.data.tdk.title,
                    keywords: data.data.tdk.keywords,
                    description: data.data.tdk.description,
                    image: []
                })
                //判断有没有数据了,然后决定显不显示没有更多的友情提示
                if(data.data.page.page_total_number>0){
                    if (data.data.list.length < 50) {
                        this.setData({
                            nomore: 3
                        })
                    } else {
                        this.setData({
                            nomore: 2
                        })
                    }
                } else {
                    this.setData({
                        nomore: 2
                    })
                }
                canUseReachBottom = true;    //这句
            } else {
                swan.showToast({
                    title: data.error_msg,
                    icon: 'none'
                })
            }
        //请求数据失败
        }).catch(error => {
            swan.showToast({
                title: '网络异常',
                icon: 'none'
            })
        })
    },
    //上拉时为数组增加数据,实现上拉分页加载效果
    lower() {
        if (!canUseReachBottom) return; 
        let that = this
        let pageCurrent = that.data.pageCurrent
        let page_total_number = that.data.page_total_number
        if (pageCurrent <= page_total_number) {
            that.setData({
                page: pageCurrent + 1
            }, function () {
                that.thematicList()
            })
        }
    },
    onReady: function() {
        // 监听页面初次渲染完成的生命周期函数
    },
    onShow: function() {
        // 监听页面显示的生命周期函数
    },
    onHide: function() {
        // 监听页面隐藏的生命周期函数
    },
    onUnload: function() {
        // 监听页面卸载的生命周期函数
    },
    onPullDownRefresh: function() {
        // 监听用户下拉动作
    },
    onReachBottom: function() {
        // 页面上拉触底事件的处理函数
    },
    onShareAppMessage: function () {
        // 用户点击右上角转发
    }
});
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值