小程序模板网

微信小程序上滑加载下拉刷新(onscrollLower)分批加载数据

分享者:kingrome2017,来自原文地址

 

上篇:

 

前言

页面缓存的设置优化了页面加载,减少了频繁的调取接口,使用户在断网的情况下有更好的体验。

每个微信小程序都可以有自己的本地缓存,可以通过 wx.setStorage(wx.setStorageSync)、wx.getStorage(wx.getStorageSync)、wx.clearStorage(wx.clearStorageSync)可以对本地缓存进行设置、获取和清理。本地缓存最大为10MB。

注意: localStorage 是永久存储的,但是我们不建议将关键信息全部存在 localStorage,以防用户换设备的情况。

 

项目需求

通过使用scroll-view 自定义的鼠标滚动事件onscrollLower,监听页面下拉事件

page.init()的方法里封装了请求数据的接口,后台api文档自带分页pageSize,默认值为10,-1为请求全部数据。

说明:

触发下滑事件通过与页面data缓存数据对比,去请求接口。

 

代码实现

 

				
  1. var n=0
  2. page.init = function(callback) {
  3. page.data.loading = true;
  4. n+=10;
  5. cardService.listFavoriteCards(n,function(result){
  6. var cards = result.data.favoriteCards;
  7. var starCards = result.data.starCards;
  8.  
  9. starCards.sort(function(c1,c2){
  10. var c1Name = pinyingUtil.getInitials.convertPinyin(c1.name);
  11. var c2Name = pinyingUtil.getInitials.convertPinyin(c2.name);
  12.  
  13. return c1Name > c2Name ? 1 : -1;
  14. });
  15.  
  16. if(starCards && starCards.length> 0) {
  17. starCards.forEach(function(c){
  18. var compressEntName = dictService.compressEntName(c.companyName);
  19. c.compressEntName = compressEntName;
  20. });
  21. }
  22.  
  23. page.setData({
  24. "favoriteCards" : cards,
  25. "starCards" : starCards,
  26. "filterType" : "name",
  27. "groups" : cardService.groupCardsByNameFirstLetter(cards),
  28. "loadding":false
  29. });
  30. wx.setStorageSync("setgroups",page.data.groups)
  31. });
  32. };
  33.  
  34. }
 

				
  1. onLoad: function (options) {
  2.  
  3. var geigroups=wx.getStorageSync('setgroups')
  4. var result =[]
  5. for(var i=0; i<geigroups.length; i+=5){
  6. result.push(geigroups.slice(i,i+5));
  7. }
  8. var resultd=result[0]
  9. if(geigroups){
  10. page.setData({
  11. "groups" : resultd
  12. });
  13. console.log('缓存')
  14. }else{
  15. if (wx.getStorageSync("token")) {
  16. page.init();
  17. page.initProfile();
  18. } else {
  19. App.addListener("evt_login", function () {
  20. page.init();
  21. page.initProfile();
  22. });
  23. }
  24. console.log('正常')
  25. }
  26. }
 

				
  1. onscrollLower:function(){
  2. var page = this;
  3. var geigroups=wx.getStorageSync('setgroups') //第一步拿数据
  4. var result =[] //定义空数组
  5. var n=0; //定义index
  6. for(var i=0; i<geigroups.length; i+=10){
  7. result.push(geigroups.slice(i,i+10));
  8. } //把数据每10个一组push到 result里面
  9. n+=1;
  10.  
  11. var q=this.data.groups.length;
  12. if(geigroups){ //如果有缓存
  13. if(geigroups.length<=q) //如果当前data的数据少于缓存执行以下命令
  14. if (wx.getStorageSync("token")) { //如果有token请求数据
  15. page.init();
  16. page.initProfile();
  17. } else {
  18. App.addListener


易优小程序(企业版)+灵活api+前后代码开源 码云仓库:starfork
本文地址:https://www.eyoucms.com/wxmini/doc/course/23658.html 复制链接 如需定制请联系易优客服咨询:800182392 点击咨询
QQ在线咨询