`
阅读更多

    我们经常在软件客户端上看到这么一个功能,当我们阅读信息浏览到文章的末尾时,通常会加载出更多的信息。比如,我们在简书客户端上浏览推荐文章时,浏览到屏幕的末尾,此时又加载出了另一页的推荐文章,即实现了上拉加载更多的功能。在小程序中,我们可以借助 scroll-view 来实现这个功能,当然也可以使用别的方法来实现。

 

需求:

       当我们浏览到屏幕末尾时,加载出下一页的内容。

 

注意实现细节:

      1、 由于采用的是 scroll-view 来实现,因此需要竖向滚动,那么 scroll-y 属性的值就必须设置true ,而且scroll-view 要能竖向滚动,必须要设置 高度(height).

      2、当我们滚动到屏幕的底部时,会触发 bindscrolltolower 事件,lower-threshold 这个属性用于控制距离屏幕底部还剩下多少像素时就开始触发这个事件。

      3、当滚动到屏幕顶部时会触发 bindscrolltoupper 事件

      4、由于 bindscrolltolower  在一瞬间可能触发多次,可能会导致发送多次请求来加载数据,我们必须保证只能有一个请求去发送数据,因此需要用一个变量进行控制,详情见 js 代码中的 scrollToLower 方法。

 

实现效果:


 

代码实现:

1、wxml文件的编写

<scroll-view class='scroll-view-container' scroll-y='{{true}}' bindscrolltolower='scrollToLower' bindscrolltoupper='scrollToUpper' lower-threshold='30' upper-threshold='0'>
  <block wx:for='{{articles}}' wx:key='{{item.id}}'>
    <view class='articles-container'>
      <view class='info'>
        <image class='avatar' src='{{item.avatar}}'></image>{{item.nickname}}
        <text class='created-at'>{{item.created_at}}</text>
        <text class='category'>{{item.category}}</text>
      </view>
    </view>
  </block>
  <view class='data-loading' hidden='{{hidden}}'>
    数据加载中...
  </view>
</scroll-view>

   注意:

 

         1、scroll-y 的值需要设置true

         2、scroll-view 必须要设置 height 的值

2、wxss文件的编写

.scroll-view-container {
  background-color: #fff;
  height:100vh;
}

/**
隐藏 scroll-view 的滚动条
*/

/* ::-webkit-scrollbar {
  width: 0;
  height: 0;
  color: transparent;
} */

.data-loading {
  height: 100rpx;
  line-height: 100rpx;
  background-color: #eee;
  text-align: center;
  font-size: 14px;
}

.articles-container {
  border-bottom: 1px solid #eee;
  margin: 30rpx 10rpx;
  background-color: #eee;
}

.articles-container .info {
  font-size: 12px;
  margin: 20rpx 0rpx;
  height: 100%;
  display: inline-block;
}

.articles-container .info .avatar {
  width: 60rpx;
  height: 60rpx;
  margin-right: 10rpx;
  border-radius: 60rpx;
  display: inline-block;
  vertical-align: middle;
}

.articles-container .info .created-at {
  margin: 0px 20rpx;
  display: inline-block;
  vertical-align: middle;
}

.articles-container .info .category {
  color: #3399ea;
  display: inline-block;
  vertical-align: middle;
}

 

3、js文件的编写

Page({
  data: {
    /**
     * 用于控制当 scroll-view 滚动到底部时,显示 “数据加载中...” 的提示
     */
    hidden: true,
    /**
     * 用于显示文章的数组
     */
    articles: [],
    /**
     * 数据是否正在加载中,避免用户瞬间多次下滑到底部,发生多次数据加载事件
     */
    loadingData: false
  },
  onLoad: function(options) {
    this.loadData(true);
  },
  loadData: function(tail, callback) {
    var that = this;
    wx.request({
      url: 'https://www.csdn.net/api/articles?type=more&category=home&shown_offset=0',
      success: function(r) {
        var oldArticles = that.data.articles,
          newArticles = tail ? oldArticles.concat(r.data.articles) : r.data.articles.concat(oldArticles);
        that.setData({
          articles: newArticles
        });
        if (callback) {
          callback();
        }
      },
      error: function(r) {
        console.info('error', r);
      },
      complete: function() {}
    })
  },
  /**
   * 上滑加载更多
   */
  scrollToLower: function(e) {
    console.info('scrollToLower', e);
    var hidden = this.data.hidden,
      loadingData = this.data.loadingData,
      that = this;
    if (hidden) {
      this.setData({
        hidden: false
      });
      console.info(this.data.hidden);
    }
    if (loadingData) {
      return;
    }
    this.setData({
      loadingData: true
    });
    // 加载数据,模拟耗时操作

    wx.showLoading({
      title: '数据加载中...',
    });

    setTimeout(function() {
      that.loadData(true, () => {
        that.setData({
          hidden: true,
          loadingData: false
        });
        wx.hideLoading();
      });
      console.info('上拉数据加载完成.');
    }, 2000);
  },
  scrollToUpper: function(e) {
    wx.showToast({
      title: '触顶了...',
    })
  }
})

    注意:

           1、在scrollToLower方法中需要防止多次加载。

4、导航栏标题文字内容

{
  "navigationBarTitleText": "scroll-view的上拉刷新"
}

 

完整代码:

 scroll-view 完成上拉加载更多代码: https://gitee.com/huan1993/weixin_mini_program_study/tree/master/pages/scroll-view-pull-up-refresh

  • 大小: 3.3 MB
分享到:
评论

相关推荐

    微信小程序,使用scroll-view实现下拉加载更多(下一页)源码

    综上所述,利用微信小程序的`scroll-view`组件结合适当的事件监听和数据管理,可以轻松实现下拉加载更多功能。通过不断学习和实践,开发者可以更好地理解和运用这些技术,提升小程序的用户体验。

    微信小程序 scroll-view实现上拉加载与下拉刷新的实例

    在本实例中,我们将探讨如何利用 `scroll-view` 实现上拉加载更多数据(无限滚动)和下拉刷新数据的功能。 首先,我们来看一下涉及到的关键知识点: 1. **scroll-view** 组件:`scroll-view` 是微信小程序中的一个...

    微信小程序之<scroll-view>应用实例

    在微信小程序开发中,`&lt;scroll-view&gt;`组件是不可或缺的一部分,它主要用于实现可滚动视图区域,能够处理大量数据或内容展示的需求。本教程将深入探讨`&lt;scroll-view&gt;`的应用实例,包括如何实现查询全部、待付款、待...

    微信小程序scroll-view+swiper切换内容

    在“微信小程序scroll-view+swiper切换内容”这个场景下,描述中提到的“多个swiper-item同时显示”意味着可能是在一个 `scroll-view` 内部嵌套了多个 `swiper`,每个 `swiper` 包含多个 `swiper-item`。这样的设计...

    微信小程序实现--列表的上拉刷新和上拉加载.zip

    在微信小程序中,可以使用`&lt;scroll-view&gt;`组件的`onReachBottom`事件来监听用户上拉到底部的行为,然后调用后台接口获取新数据并更新列表。 4. **上拉加载(Load More)** 上拉加载是指在用户向上滑动列表到一定...

    微信小程序-微信小程序实现类似android下拉刷新上拉加载更多ListView.zip

    在微信小程序中,开发者可以创建出与Android应用中类似的下拉刷新和上拉加载更多的功能,这极大地提升了用户体验,使得用户能够方便地查看和获取更多数据。本项目着重讲解如何在微信小程序中实现这一功能,结合Java...

    小程序Scroll-view上拉滚动刷新数据

    在微信小程序开发中,`Scroll-view` 是一个非常重要的组件,用于实现滚动列表的效果。当用户上拉到列表底部时,通常需要加载更多数据或刷新数据。本篇将详细介绍如何利用 `Scroll-view` 实现上拉滚动刷新数据的功能...

    微信小程序_上拉加载更多_demo

    在微信小程序中,"上拉加载更多"是一种常见的功能,用于实现滚动页面时自动加载更多数据,提高用户体验,尤其在内容丰富的列表或流式布局中应用广泛。 在微信小程序中实现上拉加载更多的功能,主要涉及到以下几个...

    微信小程序-微信小程序实现类似android下拉刷新上拉加载更多ListView

    本项目"微信小程序-微信小程序实现类似android下拉刷新上拉加载更多ListView"是针对微信小程序的一个功能实现,目的是在小程序中复现Android中常见的ListView的下拉刷新和上拉加载更多的功能。 在Android开发中,...

    uniapp scroll-view 横向和纵向滚动 带滚动回调

    同时,还可以利用`loading`组件配合`scroll-view`实现上拉加载更多功能。 7. **其他属性和事件**:除了上述特性外,`scroll-view`还提供了许多其他属性和事件,如`scroll-top`、`scroll-left`用于设置滚动位置,`...

    微信小程序-微信小程序-今日头条案例

    项目为仿今日头条,使用了百度ApiStore接口查询数据,使用微信组件/api有 封装请求方法,底部tab,启动页动画,loading,scroll-view,swiper,列表页支持上下拉加载更多 &gt; 效果图: 启动欢迎页,几行代码可实现旋转与缩放:...

    微信小程序使用scroll-view标签实现自动滑动到底部功能的实例代码

    在微信小程序开发中,`scroll-view` 是一个非常重要的组件,它允许开发者创建可滚动的内容区域,以处理超出屏幕范围的内容。本实例主要讲解如何利用 `scroll-view` 实现自动滑动到底部的功能,这对于聊天界面、评论...

    微信小程序-微信小程序,全屏动画滚动

    总结一下,实现“微信小程序-微信小程序,全屏动画滚动”的关键在于理解并熟练运用微信小程序的`&lt;scroll-view&gt;`组件,配合CSS3动画和API接口,以及合理的数据加载策略。通过这样的技术组合,可以创造出流畅且富有视觉...

    微信小程序----机场索引列表(MUI索引列表)

    微信小程序是一种轻量级的应用开发框架,它允许开发者在微信平台上构建原生体验的应用,而无需安装即可使用。本教程将聚焦于如何在微信小程序中实现一个机场索引列表,利用MUI(MobUI)库提供的功能来创建具有高效...

    微信小程序 scroll-view组件实现列表页实例代码

    微信小程序的`scroll-view`组件是一个非常重要的前端组件,它为开发者提供了可滚动视图的功能,常用于实现手机端常见的上拉加载、下拉刷新效果。在这个实例中,我们将通过`&lt;摇出微笑&gt;`这个例子来了解如何使用`scroll...

    微信小程序---左滑删除.zip

    - `onPullDownRefresh`、`onReachBottom`等方法可以用于下拉刷新和上拉加载更多数据。 7. **动画库**: 微信小程序官方提供了`wx.createSelectorQuery`和`wx.createAnim`接口,可以用来创建复杂的动画效果,如...

    微信小程序下拉刷新上拉加载组件

    基于小程序原生组件scroll-view的扩展与封装,实现简单的上拉加载下拉刷新 扩展下拉刷新动画,有灵感的朋友可以丰富更多下拉动画 在线征集 在线征集下拉刷新动画创意,你可以发草图,或者psd,AE等文件到邮箱:. 只要...

    tabbar,scroll-view,swiper,微信小程序开发

    - `scroll-view` 还提供了如滚动事件监听、滚动到底部加载更多(下拉刷新和上拉加载)等功能,以优化用户体验。 3. **swiper**: - `swiper` 是轮播图组件,常用于展示多张图片或内容。 - 通过设置 `indicator` ...

    微信小程序实现列表的上拉刷新和上拉加载

    **一、上拉加载更多** 1. **页面结构**:首先,你需要在页面的`wxml`文件中创建一个可滚动的容器,通常使用`&lt;scroll-view&gt;`组件来承载列表数据。确保`scroll-y`属性设置为`true`,以便垂直滚动。 2. **数据管理**...

Global site tag (gtag.js) - Google Analytics