亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > JavaScript > 正文

微信小程序實戰之上拉(分頁加載)效果(2)

2019-11-19 16:48:23
字體:
來源:轉載
供稿:網友

上拉加載(分頁加載) 

當用戶打開一個頁面時,假設后臺數據量龐大時,一次性地返回所有數據給客戶端,頁面的打開速度就會有所下降,而且用戶只看上面的內容而不需要看后面的內容時,也浪費用戶流量,基于優化的角度來考慮,后臺不要一次性返回所有數據,當用戶有需要再往下翻的時候,再加載更加數據出來。 

業務需求:

列表滾動到底部時,繼續往上拉,加載更多內容 

必備參數:

(1)pageindex: 1 //第幾次加載
(2)callbackcount: 15 //需要返回數據的個數

其他參數:

根據接口的所需參數 

實現原理:

當第一次訪問接口時,傳遞2個必備參數(第1次加載,需要返回數據的個數為15個),和其他參數(需要搜索的字符串)給后臺,后臺返回第一次數據過來。在請求成功的的回調函數中,判斷返回的數據是否>0,是,則取出數據,渲染視圖層,并把“上拉加載”顯示在列表底部;否,則沒有數據可取,并把“沒有更多”顯示在列表底部,同時把“上拉加載”隱藏掉。

當用戶已經滾動到列表底部(這里使用到小程序提供的scroll-view組件的bindscrolltolower事件),觸發bindscrolltolower事件,參數pageindex+1,再把2個必備參數(第2次加載,需要返回數據的個數為15個)和其他參數(需要搜索的字符串)給后臺,后臺把其余的數據返回給前臺,前臺在原來數據的基礎上添加數據。 

示例:
wxml:

<view class="search">  <view class="search-bar">  <view class="search-wrap">   <icon type="search" size="16" class="icon-search" />   <input type="text" placeholder="請輸入搜索內容" class="search-input" name="searchKeyword" bindinput="bindKeywordInput" value="{{searchKeyword}}" />  </view>  <view class="search-cancel" bindtap="keywordSearch">搜索</view>  </view>  <view class="search-result">  <scroll-view scroll-y="true" bindscrolltolower="searchScrollLower">   <view class="result-item" wx:for="{{searchSongList}}" wx:key="unique" data-data="{{item}}" >   <view class="icon{{item.isonly=='0' ? ' nocopyright' : ''}}"></view>   <text class="title">{{item.songname}}</text>   <view class="subtitle">    <text wx:for="{{item.singer}}" wx:key="unique">{{item.name}}</text>   </view>   </view>   <view class="loading" hidden="{{!searchLoading}}">正在載入更多...</view>   <view class="loading complete" hidden="{{!searchLoadingComplete}}">已加載全部</view>  </scroll-view>  </view> </view> 

js:

var util = require('../../utils/util.js') Page({  data: {  searchKeyword: '', //需要搜索的字符  searchSongList: [], //放置返回數據的數組  isFromSearch: true, // 用于判斷searchSongList數組是不是空數組,默認true,空的數組  searchPageNum: 1, // 設置加載的第幾次,默認是第一次  callbackcount: 15,  //返回數據的個數  searchLoading: false, //"上拉加載"的變量,默認false,隱藏  searchLoadingComplete: false //“沒有數據”的變量,默認false,隱藏  },  //輸入框事件,每輸入一個字符,就會觸發一次  bindKeywordInput: function(e){  console.log("輸入框事件")  this.setData({   searchKeyword: e.detail.value  })  },  //搜索,訪問網絡  fetchSearchList: function(){  let that = this;  let searchKeyword = that.data.searchKeyword,//輸入框字符串作為參數   searchPageNum = that.data.searchPageNum,//把第幾次加載次數作為參數   callbackcount =that.data.callbackcount; //返回數據的個數  //訪問網絡  util.getSearchMusic(searchKeyword, searchPageNum,callbackcount, function(data){   console.log(data)   //判斷是否有數據,有則取數據   if(data.data.song.curnum != 0){   let searchList = [];   //如果isFromSearch是true從data中取出數據,否則先從原來的數據繼續添加   that.data.isFromSearch ? searchList=data.data.song.list : searchList=that.data.searchSongList.concat(data.data.song.list)   that.setData({    searchSongList: searchList, //獲取數據數組    zhida: data.data.zhida, //存放歌手屬性的對象    searchLoading: true //把"上拉加載"的變量設為false,顯示   });   //沒有數據了,把“沒有數據”顯示,把“上拉加載”隱藏   }else{   that.setData({    searchLoadingComplete: true, //把“沒有數據”設為true,顯示    searchLoading: false //把"上拉加載"的變量設為false,隱藏   });   }  })  },  //點擊搜索按鈕,觸發事件  keywordSearch: function(e){  this.setData({   searchPageNum: 1, //第一次加載,設置1   searchSongList:[], //放置返回數據的數組,設為空   isFromSearch: true, //第一次加載,設置true   searchLoading: true, //把"上拉加載"的變量設為true,顯示   searchLoadingComplete:false //把“沒有數據”設為false,隱藏  })  this.fetchSearchList();  },  //滾動到底部觸發事件  searchScrollLower: function(){  let that = this;  if(that.data.searchLoading && !that.data.searchLoadingComplete){   that.setData({   searchPageNum: that.data.searchPageNum+1, //每次觸發上拉事件,把searchPageNum+1   isFromSearch: false //觸發到上拉事件,把isFromSearch設為為false   });   that.fetchSearchList();  }  } }) 

util.js:

function getSearchMusic(keyword, pageindex, callbackcount, callback){  wx.request({  url: 'https://c.y.qq.com/soso/fcgi-bin/search_for_qq_cp',  data: {   g_tk: 5381,   uin: 0,   format: 'json',   inCharset: 'utf-8',   outCharset: 'utf-8',   notice: 0,   platform: 'h5',   needNewCode: 1,   w: keyword,   zhidaqu: 1,   catZhida: 1,   t: 0,   flag: 1,   ie: 'utf-8',   sem: 1,   aggr: 0,   perpage: 20,   n: callbackcount, //返回數據的個數   p: pageindex,   remoteplace: 'txt.mqq.all',   _: Date.now()  },  method: 'GET',  header: {'content-Type': 'application/json'},  success: function(res){   if(res.statusCode == 200){   callback(res.data);   }  }  }) }  module.exports = {  getSearchMusic: getSearchMusic } 

wxss:

page{  display: flex;  flex-direction: column;  height: 100%; }  /*搜索*/ .search{  flex: auto;  display: flex;  flex-direction: column;  background: #fff; } .search-bar{  flex: none;  display: flex;  align-items: center;  justify-content: space-between;  padding: 20rpx;  background: #f4f4f4; } .search-wrap{  position: relative;  flex: auto;  display: flex;  align-items: center;  height: 80rpx;  padding: 0 20rpx;  background: #fff;  border-radius: 6rpx; } .search-wrap .icon-search{  margin-right: 10rpx; } .search-wrap .search-input{  flex: auto;  font-size: 28rpx; } .search-cancel{  padding: 0 20rpx;  font-size: 28rpx; }  /*搜索結果*/ .search-result{  flex: auto;  position: relative; } .search-result scroll-view{  position: absolute;  bottom: 0;  left: 0;  right: 0;  top: 0; } .result-item{  position: relative;  display: flex;  flex-direction: column;  padding: 20rpx 0 20rpx 110rpx;  overflow: hidden;  border-bottom: 2rpx solid #e5e5e5; }  .result-item .media{  position: absolute;  left: 16rpx;  top: 16rpx;  width: 80rpx;  height: 80rpx;  border-radius: 999rpx; } .result-item .title, .result-item .subtitle{  overflow: hidden;  text-overflow: ellipsis;  white-space: nowrap;  line-height: 36rpx; } .result-item .title{  margin-bottom: 4rpx;  color: #000; } .result-item .subtitle{  color: #808080;  font-size: 24rpx; } .result-item:first-child .subtitle text{  margin-right: 20rpx; } .result-item:not(:first-child) .subtitle text:not(:first-child):before{  content: '/';  margin: 0 8rpx; } .loading{  padding: 10rpx;  text-align: center; } .loading:before{  display: inline-block;  margin-right: 5rpx;  vertical-align: middle;  content: '';  width: 40rpx;  height: 40rpx;  background: url(../../images/icon-loading.png) no-repeat;  background-size: contain;  animation: rotate 1s linear infinite; } .loading.complete:before{  display: none; } 

運行:

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持武林網。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
91免费精品国偷自产在线| 久久av中文字幕| 国产精品美女免费| 久久精品青青大伊人av| 国产综合视频在线观看| 在线成人中文字幕| 深夜福利国产精品| 热99精品只有里视频精品| 91干在线观看| 日韩中文av在线| 91国自产精品中文字幕亚洲| 日韩欧美极品在线观看| 81精品国产乱码久久久久久| 色妞一区二区三区| 国产精品一区二区性色av| 清纯唯美日韩制服另类| 欧美久久精品午夜青青大伊人| 91免费人成网站在线观看18| 成人免费高清完整版在线观看| 成人免费自拍视频| 色偷偷亚洲男人天堂| 26uuu亚洲伊人春色| 亚洲国产精品免费| 国产精品露脸av在线| 国产成人福利视频| 国产日韩欧美电影在线观看| 欧美性猛交xxxx黑人| 激情懂色av一区av二区av| 精品国偷自产在线视频| 亚洲综合社区网| 亚洲自拍小视频免费观看| 日韩极品精品视频免费观看| 欧美精品久久久久久久久久| 美女国内精品自产拍在线播放| 中文字幕日韩在线播放| 中文字幕日本精品| 精品偷拍一区二区三区在线看| 91亚洲午夜在线| 国产综合在线看| 日韩综合中文字幕| 成人午夜高潮视频| 欧美一级片一区| 亚洲第一二三四五区| 亚洲国产欧美一区二区丝袜黑人| 18久久久久久| 久热精品视频在线观看一区| 欧美大荫蒂xxx| 色天天综合狠狠色| 日韩av在线免费| 国产精品久久久久久久久借妻| 欧美中文在线免费| 97在线精品视频| 国产精品视频一| 26uuu另类亚洲欧美日本老年| 欧美性猛交xxxx久久久| 亚洲欧洲在线免费| 国产一区在线播放| 国产一区二区丝袜高跟鞋图片| 国产亚洲精品美女| 国产精品一区二区久久精品| 成人国产亚洲精品a区天堂华泰| 亚洲国产中文字幕在线观看| 亚洲欧美国内爽妇网| 欧美在线影院在线视频| 亚洲伦理中文字幕| 色一情一乱一区二区| 蜜月aⅴ免费一区二区三区| 中文字幕免费精品一区| 欧美日韩一二三四五区| 欧美精品精品精品精品免费| 亚洲国产97在线精品一区| 国产精品久久久久久久av电影| 久热精品视频在线观看一区| 精品国产一区二区三区久久狼5月| 91av在线不卡| 亚洲欧美www| 欧美性感美女h网站在线观看免费| 亚洲成人精品久久久| 欧美精品成人91久久久久久久| 日韩精品在线视频| 久久久女人电视剧免费播放下载| 欧美大片在线免费观看| 国产精品久久久久免费a∨| 亚洲91精品在线| 7m第一福利500精品视频| 日韩久久精品成人| 欧美日韩免费在线观看| 国产va免费精品高清在线| 久久这里只有精品视频首页| 91久久国产精品91久久性色| 亚洲性日韩精品一区二区| 九九热精品在线| 欧美日韩在线免费观看| 国产精品黄色影片导航在线观看| 亚洲欧洲国产精品| 欧美成人免费播放| 国产精品免费看久久久香蕉| 亚洲免费伊人电影在线观看av| 久久黄色av网站| 欧美孕妇毛茸茸xxxx| 91精品国产九九九久久久亚洲| 亚洲国产高清高潮精品美女| 国产精品丝袜一区二区三区| 国产精品一区二区久久精品| 97人人爽人人喊人人模波多| 国产精品久久久久久搜索| 国产精品私拍pans大尺度在线| 欧美视频在线视频| 成人国产精品色哟哟| 日韩黄色在线免费观看| 成人欧美一区二区三区黑人孕妇| 在线视频亚洲欧美| 一本大道香蕉久在线播放29| 久久资源免费视频| 久久天天躁狠狠躁夜夜躁2014| 国产视频精品久久久| 免费99精品国产自在在线| 最近2019中文字幕在线高清| 亚洲国产一区二区三区在线观看| 日本成人激情视频| 亚洲乱码国产乱码精品精天堂| 国产精品成人久久久久| 日韩中文字幕在线精品| 欧美精品成人91久久久久久久| 91在线视频成人| 91亚洲人电影| 欧美日韩在线影院| 中文字幕日韩视频| 欧美午夜丰满在线18影院| 国产精品com| 欧美性猛交xxxx富婆| 久久夜色精品国产亚洲aⅴ| 欧美午夜精品久久久久久人妖| 91精品国产九九九久久久亚洲| 欧美亚洲视频在线观看| 亚洲自拍另类欧美丝袜| 亚洲日本中文字幕| 中文欧美在线视频| 日韩精品中文在线观看| 九九热精品在线| 激情久久av一区av二区av三区| 欧美另类极品videosbestfree| 一区二区三区国产视频| 日韩性生活视频| 日韩成人av在线播放| 久久免费视频网| 97涩涩爰在线观看亚洲| 亚洲欧美国产高清va在线播| 亚洲自拍偷拍一区| 亚洲女在线观看| 欧美男插女视频| 91人成网站www| 日韩精品极品毛片系列视频| 热草久综合在线| 欧美在线视频网| 亚洲男人天天操| 欧美一区二三区| 91香蕉国产在线观看| 精品亚洲精品福利线在观看| 亚洲精品成人久久| 黑人巨大精品欧美一区免费视频| 久久91亚洲精品中文字幕| 国产精品视频一区二区高潮| 国产精品视频久久|