小程序分页,滚动条滚到底部时往列表里添加数据

最近做小程序分页,可以有两种处理方式,一种是滚动到底部显示下一页,另一种是滚动到底部,往列表里加一页数据,我用的是第二种,效果比第一种好多了

wxml:列表底部添加文字提示:

<view wx:if="{{goodsList.length > 0}}" class="loading"> {{loadingTxt}}</view>

wxss:

1
2
3
4
.loading{
text-align: center;
font-size: 12px;
margin: 10px 0;

  js 参数定义:

复制代码
Page({

  /**
   * 页面的初始数据
   */
  data: {
    /**分页参数 */
    keyword: '',
    searchStatus: false,
    goodsList: [],
    page: 1,
    size: 2,
    id: 0,
    loadingTxt: '',
    noMoreData: false,
  },
复制代码

数据请求方法:

 

复制代码
//获取列表
  getGoodsList: function (paged = false) {
    let that = this;
    // util.request(api.GoodsList, { id: that.data.selectedId, page: that.data.page, size: that.data.size }, 'POST').then(function (res) {

      util.request(app.globalData.api_site + app.globalData.api_goods_list, 'GET',
        {
          category_id: '0',
          keywords: '',//搜素
          page_size: that.data.size,
          page_index: that.data.page,
          wid: app.globalData.subDomain,
          fromplat: app.globalData.fromplat
        }
      ).then((res) => {

        if (res.status === 1) {
        let goods = [];
        if (!paged) {
          goods = res.data;
          console.log('goods',goods);
      
        } else {
          //当滚动到页面底部时,往列表里添加数据,其它情况(关键字查询,页签切换等)只显示一页数据
          goods = that.data.goodsList.concat(res.data);//concat:复制整个数组到前面的数组
        }
        that.setData({
          loadingTip: '',
          noMoreData: false,
          goodsList: goods,
        });
        if (res.data.length < that.data.size) {
          that.setData({
            loadingTxt: '没有更多内容',
            noMoreData: true,
          });
        }
      }
    });
  },
复制代码

 

其他地方调用

复制代码
/**
* 页面相关事件处理函数--监听用户下拉动作
*/
  onPullDownRefresh: function () {
this.data.page = 1
this.getGoodsList();
},

/**
* 页面上拉触底事件的处理函数
*/
onReachBottom: function () {
if (!this.data.noMoreData) {
this.data.page = this.data.page + 1;
this.getGoodsList(true);
};
},
复制代码

页面显示:index.wxml

复制代码
    <view class="goods-box" wx:for-items="{{goodsList}}" wx:key="{{index}}" bindtap="toDetailsTap" data-id="{{item.id}}">
           <view class="img-box">
              <image src="{{item.focusImgUrl}}" class="image" mode="aspectFill" lazy-load="true"/>
           </view>
           <view class="goods-title">{{item.productName}}</view>
           <view style='display:flex;'>
            <view class="goods-price">¥ {{item.salePrice}}</view>
            <view wx:if="{{item.marketPrice && item.marketPrice > 0}}" class="goods-price" style='color:#aaa;text-decoration:line-through'>¥ {{item.marketPrice}}</view>
           </view>           
        </view>
复制代码

 

 

完成 结束。

posted @   温子画  阅读(2755)  评论(0编辑  收藏  举报
编辑推荐:
· .NET制作智能桌面机器人:结合BotSharp智能体框架开发语音交互
· 软件产品开发中常见的10个问题及处理方法
· .NET 原生驾驭 AI 新基建实战系列:向量数据库的应用与畅想
· 从问题排查到源码分析:ActiveMQ消费端频繁日志刷屏的秘密
· 一次Java后端服务间歇性响应慢的问题排查记录
阅读排行:
· 互联网不景气了那就玩玩嵌入式吧,用纯.NET开发并制作一个智能桌面机器人(四):结合BotSharp
· 一个基于 .NET 开源免费的异地组网和内网穿透工具
· 《HelloGitHub》第 108 期
· Windows桌面应用自动更新解决方案SharpUpdater5发布
· 我的家庭实验室服务器集群硬件清单
点击右上角即可分享
微信分享提示