uni-app上拉页面加载数据,实现分页效果

实现分页效果是为了在上拉数据的时候逐渐加载下一页面的数据,这样就不会造成数据加载太多造成的页面显示过慢的问题,可以在一定成的上优化界面。

首先要先定义数据和在上拉函数中调用this,代码如下:

  1. var _self,
  2. page = 1;

然后也要在数据data中加入所要提示页面的消息,代码如下:

  1. loadingType: 0,
  2. contentText: {
  3. contentdown: "上拉显示更多",
  4. contentrefresh: "正在加载...",
  5. contentnomore: "没有更多数据了"
  6. },

此外还要再模板中添加提示消息的html代码:

  1. <text class="loading-text">
  2. {{loadingType === 0 ? contentText.contentdown : (loadingType === 1 ? contentText.contentrefresh : contentText.contentnomore)}}
  3. </text>

提示消息的代码是要展示再要显示的数据最下方,其中包括“下拉加载数据,没有等多数据”等,

如果是进入到页面就默认加载数据,需要在Onload中直接加载数据,这时候加载数据的代码如下:

Onload中代码:

  1. // 产品列表数据默认加载
  2. _self = this;
  3. this.getNewsList();

获取数据的方法:

  1. methods: {
  2. // 产品列表数据
  3. getNewsList: function() {//第一次回去数据
  4. _self.loadingType = 0;
  5. uni.showNavigationBarLoading();
  6. uni.request({
  7. url: 'api地址',
  8. method:'POST',
  9. data:{
  10. //请求参数
  11. },
  12. success: function(res) {
  13. console.log(res.data.data)
  14. _self.hotRecommendlist = res.data.data.response;
  15. if(res.data.data.totalcount==res.data.data.response.length){
  16. uni.showToast({
  17. title: '已是最新',
  18. duration: 2000
  19. });
  20. }
  21. uni.hideNavigationBarLoading();//关闭加载动画
  22. uni.stopPullDownRefresh();//得到数据后停止下拉刷新
  23. }
  24. });
  25. },
  26. }

上拉加载和下拉刷新数据的代码如下:

  1. // 下拉刷新
  2. onPullDownRefresh() {
  3. this.getNewsList();
  4. },
  5. // 上拉加载
  6. onReachBottom: function() {
  7. page++;//每触底一次 page +1
  8. // console.log(_self.hotRecommendlist.length);
  9. if (_self.loadingType != 0) {//loadingType!=0;直接返回
  10. return false;
  11. }
  12. _self.loadingType = 1;
  13. // console.log(page);
  14. uni.showNavigationBarLoading();//显示加载动画
  15. uni.request({
  16. url:'地址',
  17. method:'POST',
  18. data:{
  19. "trandate":1534730538050,
  20. "requestinfo":{
  21. "riskkind": "", //产品类型
  22. "hot": "Y", //是否热点 Y/N
  23. "iscommend":"",//是否推荐 Y/N
  24. "productname":"",//产品名称
  25. "suppliername":"",//保险公司名称
  26. "channeltype":"",//渠道
  27. "ispublish":"Y",//是否上架 Y/N
  28. "productcode":"",//产品编码
  29. "start_date":"",//查询产品区间开始时间
  30. "end_date":"",//查询产品区间结束时间
  31. "pageno":page, //页码,整数大于0,必填
  32. "pagesize":1 //每页显示条数,整数大于0必填
  33. }
  34. },
  35. success: function(res) {
  36. if (_self.hotRecommendlist.length==res.data.data.totalcount) {//没有数据
  37. _self.loadingType = 2;
  38. uni.hideNavigationBarLoading();//关闭加载动画
  39. return false;
  40. }
  41. for(var i=_self.hotRecommendlist.length;i<res.data.data.totalcount;i++){
  42. _self.hotRecommendlist = _self.hotRecommendlist.concat(res.data.data.response[i-1]);//将数据拼接在一起
  43. }
  44. _self.loadingType = 0;//将loadingType归0重置
  45. uni.hideNavigationBarLoading();//关闭加载动画
  46. }
  47. });
  48. },

其实根本原理就是上拉列表的时候,page页码就会自动+1,再那获取到的数据拼接到已经存在的数组中,从而达到数据的同时刷新。

玩咖指针 2020-09-12 15:00:01