小程序点击选择页码分页(上篇优化)

 先看效果

 wxml

<view class="container">
	<view class="pages_box">
	    <view bindtap="pagesFn" data-type="start">第1页</view>
		<view wx:if="{{frontPage}}" bindtap="pagesFn" data-type="previous_page"><</view>
		<block wx:for="{{maxPages}}" wx:key="index" wx:if="{{index<6}}">
			<view wx:if="{{tyindex+index <=maxPages}}" bindtap="pagesFn" class="{{(pagesNum)%6==(index+1)%6?'active':''}}" data-number="{{tyindex+index}}" data-type="{{(index)%6}}">{{tyindex+index}}</view>
		</block>
		<view wx:if="{{lastPage}}" bindtap="pagesFn" data-type="next_page">></view>
		<view bindtap="pagesFn" data-type="end">第{{maxPages}}页</view>
	</view>
</view>

js

const app = getApp();
Page({
  data: {
    maxPages:22,//最大页码
    pagesNum:1,
    tyindex:1,
    frontPage:false,
    lastPage:false,
  },
  // 加载页面
  onLoad: function () {
    this.setData({
      lastPage:this.data.maxPages>6?true:false
    })
  },
  pagesFn:function(e){
    let type = e.currentTarget.dataset.type;
    let number = e.currentTarget.dataset.number;
    let _that = this;
    if(typeof type == "string"){//上下页
      if(type == "previous_page"){//上一页
        if(_that.data.pagesNum-1 < 1){
          return false
        }
        if((_that.data.pagesNum-1)%6==0){
          if((_that.data.pagesNum-7)<=1){
            this.setData({
              lastPage:true,
              frontPage:false,
            })
          }
          _that.setData({
            tyindex:_that.data.pagesNum-6,
            pagesNum:_that.data.pagesNum-1,
          })
        }else{
          _that.setData({
            pagesNum:_that.data.pagesNum-1,
          })
        }
      }else if(type == "next_page"){//下一页
        if(_that.data.pagesNum+1 > _that.data.maxPages){
          return false
        }
        if(_that.data.pagesNum%6==0){
          console.log(_that.data.pagesNum+6)
          console.log(_that.data.maxPages)
          if((_that.data.pagesNum+6)>=_that.data.maxPages){
            this.setData({
              lastPage:false,
              frontPage:true,
            })
          }
          _that.setData({
            tyindex:_that.data.pagesNum+1,
            pagesNum:_that.data.pagesNum+1,
          })
        }else{
          _that.setData({
            pagesNum:_that.data.pagesNum+1,
          })
        }
      }else if(type == "start"){//第一页
        _that.setData({
          pagesNum:1,
          tyindex:1,
          lastPage:true,
          frontPage:false,
        })
      }else{//最后一页
        if((_that.data.maxPages%6)==0){
          _that.setData({
            pagesNum:_that.data.maxPages,
            tyindex:_that.data.maxPages-5,
            lastPage:false,
            frontPage:true,
          })
        }else{
          _that.setData({
            pagesNum:_that.data.maxPages,
            tyindex:_that.data.maxPages+1-(_that.data.maxPages%6),
            lastPage:false,
            frontPage:true,
          })
        }
      }
    }else{
      _that.setData({
        pagesNum:number
      })
    }
    console.log(this.data.pagesNum)
    // this.DataFn()可在此调用数据函数
  },
});

wxss

/* pages/ceshiPages/index.wxss */


.container {
  height: 100%;
  display: flex;
  flex-direction: column;
}
 
.pages_box{
  margin-top: 20rpx;
  display: flex;
  display: -webkit-flex;
  flex-direction: row;
  justify-content: center;
  align-content: flex-start;
  flex-wrap: nowrap;
}
.pages_box>view{
  width: 50rpx;
  height: 50rpx;
  line-height: 50rpx;
  font-size: 30rpx;
  border: 1px solid #A0A0A0;
  background-color: #F7F7F7;
  display: inline-block;
  margin-left: 12rpx;
  color: #64646C;
  border-radius: 10rpx;
  text-align: center;
}
.pages_box>view.active{
  background-color: #FCD821;
  border-color: #F39800;
}
.pages_box>view:last-child,.pages_box>view:first-child{
  width: 130rpx;
  border-radius: 60rpx;
  text-align: center;
  font-size: 25rpx;
}

  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
全屏大图html企业网站(PC+手机+微信端)是以PHP+MYSQL进行开发的响应式全屏企业网站。程序特色:一:使搜索引擎更加容易抓取和索引二:提供更多的功能,提高用户的友好体验三:可用性的提高,提高用户的友好体验使用方法:将文件上传至PHP空间,运行http://你的域名/install.php进行安装。只需两步即可安装完成,为了保证网站安全,请修改默认后台路径及数据库名称。S-CMS学校建站系统 v3.0 build20190606 更新说明:1.优化:对支付部分的敏感传入参数(如订单金额)进行了加密,防止恶意篡改2.优化:对后台登录的二次验证进行优化,仅验证IP前三段,避免因开启CDN导致多次验证3.优化:后台自动数据备份仅保留最近十日,避免占用空间过大,手动备份不受影响S-CMS学校建站系统 v3.0 build20190617 更新说明:1.优化:后台选择上传素材时加入了名称显示和筛选排序功能2.修复:修复了在开启静态的状态下手机版分页功能显示错误的问题3.新增:加入了自动备份的开关,无需自动备份的用户可以关闭该功能S-CMS学校建站系统 v3.0 build20190620更新说明:1.新增:新增充值卡功能,可以在会员中心充值界面使用充值卡进行余额充值2.修复:对部分核心程序语句进行了修改,修复了部分主机误报问题3.修复:修复网站URL二维码扫码错误的问题S-CMS学校建站系统 v3.0 build20190704更新说明:1.修复:修复了在少数情况下新闻和产品列表页会出现负数页码的情况2.新增:后台查询系统增加关联表单内容的提交信息,方便在同一页面查看3.新增:万能表单系统在提交之前增加预览功能,方便用户比对信息
S-CMS政府建站系统是淄博闪灵网络科技有限公司开发的一款专门为企业建站提供解决方案的产品,前端模板样式主打HTML5模板,以动画效果好、页面流畅、响应式布局为特色,程序主体采用PHP+MYSQL构架,拥有独立自主开发的一整套函数、标签系统,具有极强的可扩展性,设计师可以非常简单的开发出漂亮实用的模板。系统自2015年发布第一个版本以来,至今已积累上万用户群,为上万企业提供最优质的建站方案。功能特点:支持电脑端+手机端+微信端(三端合一)支持站内搜索支持会员系统支持商城系统支持万能表单支持支付宝(即时到帐接口)/微信(扫码支付)付款方式支持中/英双语支持QQ/旺旺客服支持动/静态页面访问支持接入微信公众号支持会员系统QQ/微信接口一键登录支持在线检测木马支持后台一键切换模板支持空间用量即时显示支持在线数据库备份/还原(不限时间点个数)支持多管理员(可各自设置权限)支持根目录/子目录安装支持后台一键更新程序(永久免费更新)支持自检更新,保证每天用到的都是最新源码前台模板全部基于精美模板开发【模板说明】精简版自带一套PC模板(编号s11)、一套WAP模板(编号w1)【环境支持】PHP环境 / 200M或以上空间大小 / 开启父路径 / 设置index.php为默认首页 / 目录写入权限需要开启【安装步骤】将文件上传至空间目录,运行“http://域名/install.php”进入安装页面,按照提示安装完成即可【目录支持】支持根目录/子目录安装【数据库】MYSQLS-CMS企业建站系统 build20190603 更新说明:1.优化:对支付部分的敏感传入参数(如订单金额)进行了加密,防止恶意篡改2.优化:对后台登录的二次验证进行优化,仅验证IP前三段,避免因开启CDN导致多次验证3.优化:后台自动数据备份仅保留最近十日,避免占用空间过大,手动备份不受影响S-CMS企业建站系统 build20190610 更新说明:1.优化:后台选择上传素材时加入了名称显示和筛选排序功能2.修复:修复了在开启静态的状态下手机版分页功能显示错误的问题3.新增:加入了自动备份的开关,无需自动备份的用户可以关闭该功能S-CMS企业建站系统 build20190617 更新说明:1.新增:新增充值卡功能,可以在会员中心充值界面使用充值卡进行余额充值2.修复:对部分核心程序语句进行了修改,修复了部分主机误报问题3.修复:修复网站URL二维码扫码错误的问题S-CMS企业建站系统 build20190701 更新说明:1.修复:修复了在少数情况下新闻和产品列表页会出现负数页码的情况2.新增:后台查询系统增加关联表单内容的提交信息,方便在同一页面查看3.新增:万能表单系统在提交之前增加预览功能,方便用户比对信息
在微信小程序中,可以使用wx.request()方法向后端请求数据。对于分页查询,可以在请求时传递两个参数:page和pageSize,分别表示请求的页码和每页请求的数据条数。当用户上拉加载时,可以在当前页码的基础上+1,然后再次向后端发起请求,这样就可以实现分页查询。具体实现步骤如下: 1. 在wxml文件中创建一个scroll-view组件,并设置属性enable-back-to-top为true,以支持快速返回顶部功能。 ```html <scroll-view class="content" scroll-y="true" enable-back-to-top="{{enableBackToTop}}" bindscrolltolower="loadMore"> <!--渲染数据--> </scroll-view> ``` 2. 在js文件中定义一个变量page,表示当前页码。 ```javascript let page = 1; ``` 3. 定义一个loadMore()方法,在该方法中发起请求获取下一页数据,并将数据添加到当前页面中已经渲染的数据列表中。 ```javascript loadMore: function() { wx.showLoading({ title: '正在加载中...', }); let that = this; wx.request({ url: 'url/to/your/api', data: { page: page+1, pageSize: 10 }, success: function(res) { wx.hideLoading(); let newData = res.data.result; if (newData.length > 0) { page++; that.setData({ list: that.data.list.concat(newData) }); } else { wx.showToast({ title: '没有更多数据啦', icon: 'none' }); } }, fail: function() { wx.hideLoading(); wx.showToast({ title: '请求失败,请稍后重试', icon: 'none' }); } }); } ``` 4. 在onLoad()方法中,初始化数据并调用loadMore()方法获取第一页数据。 ```javascript onLoad: function() { this.setData({ list: [], enableBackToTop: false }); page = 1; this.loadMore(); } ``` 通过以上步骤,就可以实现微信小程序上拉加载分页查询的功能了。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值