【微信小程序】利用scroll-view标签,实现上拉分页加载更多

小程序scroll-view 实现上拉加载

1.wxml

<scroll-view scroll-y style='height:{{windowHeight}}px;' bindscrolltolower="loadMore">
  <!-- bindscrolltolower 滚动到底部/右边时触发 -->
  <view class='list'>
      <view class='item' wx:for="{{list}}">
          {{item.title}}
      </view>
  </view>
</scroll-view>

2.JS

// pages/test/test.js
Page({
  //数据初始化
  data: {
    list:[],             //接收数据的数组
    windowHeight:"",     //适配设备的高度
    page:1,              //记录加载数据的页数参数
    flag:true            //记录是否请求数据的状态
  },
 
  //生命周期函数--监听页面加载
  onLoad: function (options) {
    //获取新闻数据
    this.requestData();
    //把this对象复制到临时变量that
    var that = this;
    //获取设备信息,获取屏幕的Height属性
    wx.getSystemInfo({
      success: function(res) {
        that.setData({
          windowHeight : res.windowHeight-n(n为触底距离)
        })
      }
    })
  },
  
  //请求数据
  requestData(){
    //打开记录请求的状态flag
    this.setData({
      flag:false
    })
    //把this对象复制到临时变量that
    var that = this;
    //请求数据
    var api = "http://www.phonegap100.com/appapi.php";
    wx.request({
      url: api,
      data:{  //参数传递
        a:"getPortalList",
        catid:"20",
        page:that.data.page
      },
      header:{ //设置请求头
        'content-type': 'application/json' // 默认值
      },
      success:function(res){ //请求成功
        //数据少于20条时,即请求到了最后一页
        if(res.data.result.length < 20){
          //记录请求状态,把reqState传值给flag
          var reqState = false;
        }else{
          var reqState = true;
        }
        //接收数据,保证每次都拼接上
        var list = that.data.list.concat(res.data.result);
        //为下一页的请求参数做准备
        var nextPage = ++that.data.page;
        that.setData({
          list:list,
          page:nextPage,
          flag:reqState
        }) 
      },
      fail:function(error){ //请求失败
        console.log(error);
      }
    })
  },
  //scroll-view 滚动到底部/右边时触发触发
  loadMore(){
    //根据请求状态flag请求数据
    if(this.data.flag){
      this.requestData();
    }
  }
})

3wxss

/* pages/test/test.wxss */
.list{
  padding: 10rpx;
}
 
.item{
  line-height: 88rpx;
  height: 88rpx;
  overflow: hidden;
  border-bottom: 1rpx solid #eee;
}
  • 2
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
是的,可以使用swiper和scroll-view组件来实现微信小程序的左右分页功能。 首先,在wxml文件中添加swiper和scroll-view组件,并设置相应的属性。 ```html <swiper class="swiper-container" current="{{current}}" duration="{{500}}" style="height:{{pageHeight}}px"> <swiper-item> <scroll-view class="scroll-view" scroll-x="{{true}}" scroll-y="{{false}}" style="width:{{windowWidth}}px;height:{{pageHeight}}px;"> <!--第一页内容--> </scroll-view> </swiper-item> <swiper-item> <scroll-view class="scroll-view" scroll-x="{{true}}" scroll-y="{{false}}" style="width:{{windowWidth}}px;height:{{pageHeight}}px;"> <!--第二页内容--> </scroll-view> </swiper-item> <!--更多swiper-item--> </swiper> ``` 其中,swiper组件设置了current属性,用于控制当前显示的页码;scroll-view组件设置了scroll-x属性,用于开启水平方向的滚动,并设置了样式宽度为屏幕宽度,高度为页面高度。 接着,在js文件中,监听swiper组件的change事件,用于动态新当前页码。 ```javascript Page({ data: { current: 0, windowWidth: wx.getSystemInfoSync().windowWidth, pageHeight: wx.getSystemInfoSync().windowHeight }, onLoad: function () { //... }, onPageChange: function (e) { this.setData({ current: e.detail.current }) } }) ``` 最后,在样式文件中,设置swiper-container和scroll-view的样式,用于实现左右分页效果。 ```css .swiper-container { overflow: hidden; position: relative; } .scroll-view { white-space: nowrap; } .swiper-item { display: inline-block; vertical-align: top; width: 100%; } ``` 以上就是使用swiper和scroll-view组件实现微信小程序左右分页功能的方法。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值