小程序scroll-view滑動(dòng)觸底

如果同時(shí)想要下拉刷新和鼠標(biāo)觸底加載缘揪,就可以在json文件中設(shè)置了"enablePullDownRefresh": true屬性健盒,如果只需要觸底加載驱还,就可以采用scroll-view組件的bindscrolltolower事件來(lái)觸發(fā)。這個(gè)是采用的網(wǎng)上的demo胀莹,不想把數(shù)據(jù)單獨(dú)抽出來(lái)了,而且實(shí)際應(yīng)用下基本是向接口請(qǐng)求分頁(yè)加載婚温,本篇代碼為轉(zhuǎn)載描焰,轉(zhuǎn)載的地址為原demo地址

需求:

當(dāng)我們?yōu)g覽到屏幕末尾時(shí),加載出下一頁(yè)的內(nèi)容栅螟。

注意實(shí)現(xiàn)細(xì)節(jié):

1荆秦、 由于采用的是scroll-view 來(lái)實(shí)現(xiàn),因此需要豎向滾動(dòng)力图,那么scroll-y 屬性的值就必須設(shè)置true ,而且scroll-view 要能豎向滾動(dòng)步绸,必須要設(shè)置 高度(height).

2、當(dāng)我們滾動(dòng)到屏幕的底部時(shí)搪哪,會(huì)觸發(fā)bindscrolltolower 事件靡努,lower-threshold 這個(gè)屬性用于控制距離屏幕底部還剩下多少像素時(shí)就開(kāi)始觸發(fā)這個(gè)事件坪圾。

3、當(dāng)滾動(dòng)到屏幕頂部時(shí)會(huì)觸發(fā) bindscrolltoupper 事件

4惑朦、由于bindscrolltolower 在一瞬間可能觸發(fā)多次兽泄,可能會(huì)導(dǎo)致發(fā)送多次請(qǐng)求來(lái)加載數(shù)據(jù),我們必須保證只能有一個(gè)請(qǐng)求去發(fā)送數(shù)據(jù)漾月,因此需要用一個(gè)變量進(jìn)行控制病梢,詳情見(jiàn) js 代碼中的 scrollToLower 方法。

實(shí)現(xiàn)效果:

scroll-view上拉刷新.gif
  • WXML

<!-- bindscrolltolower滾動(dòng)到底部/右邊時(shí)觸發(fā)梁肿,lower-threshold 距底部/右邊多遠(yuǎn)時(shí)蜓陌,觸發(fā) scrolltolower 事件 -->
<scroll-view class='scroll-view-container' scroll-y='{{true}}' bindscrolltolower='scrollToLower'  
bindscrolltoupper='scrollToUpper' lower-threshold='30' upper-threshold='0'>  
  <block wx:for='{{articles}}' wx:key='{{item.id}}'>  
    <view class='articles-container'>  
      <view class='info'>  
        <image class='avatar' src='{{item.avatar}}'></image>{{item.nickname}}  
        <text class='created-at'>{{item.created_at}}</text>  
        <text class='category'>{{item.category}}</text>  
      </view>  
    </view>  
  </block>  
  <view class='data-loading' hidden='{{hidden}}'>  
    數(shù)據(jù)加載中...  
  </view>  
</scroll-view>  
  • WXSS

.scroll-view-container {  
  background-color: #fff;  
  height:100vh;  
}  

.data-loading {  
  height: 100rpx;  
  line-height: 100rpx;  
  background-color: #eee;  
  text-align: center;  
  font-size: 14px;  
}  
  
.articles-container {  
  border-bottom: 1px solid #eee;  
  margin: 30rpx 10rpx;  
  background-color: #eee;  
}  
  
.articles-container .info {  
  font-size: 12px;  
  margin: 20rpx 0rpx;  
  height: 100%;  
  display: inline-block;  
}  
  
.articles-container .info .avatar {  
  width: 60rpx;  
  height: 60rpx;  
  margin-right: 10rpx;  
  border-radius: 60rpx;  
  display: inline-block;  
  vertical-align: middle;  
}  
  
.articles-container .info .created-at {  
  margin: 0px 20rpx;  
  display: inline-block;  
  vertical-align: middle;  
}  
  
.articles-container .info .category {  
  color: #3399ea;  
  display: inline-block;  
  vertical-align: middle;  
}  
  • JS

Page({
  data: {
    /** 
     * 用于控制當(dāng) scroll-view 滾動(dòng)到底部時(shí),顯示 “數(shù)據(jù)加載中...” 的提示 
     */
    hidden: true,
    /** 
     * 用于顯示文章的數(shù)組 
     */
    articles: [],
    /** 
     * 數(shù)據(jù)是否正在加載中吩蔑,避免用戶(hù)瞬間多次下滑到底部钮热,發(fā)生多次數(shù)據(jù)加載事件 
     */
    loadingData: false
  },
  onLoad: function(options) {
    this.loadData(true);
  },
  loadData: function(tail, callback) {
    var that = this;
    wx.request({
      url: 'https://www.csdn.net/api/articles?type=more&category=home&shown_offset=0',
      success: function(r) {
        var oldArticles = that.data.articles,
          newArticles = tail ? oldArticles.concat(r.data.articles) : r.data.articles.concat(oldArticles);
        that.setData({
          articles: newArticles
        });
        if (callback) {
          callback();
        }
      },
      error: function(r) {
        console.info('error', r);
      },
      complete: function() {}
    })
  },
  /** 
   * 上滑加載更多 
   */
  scrollToLower: function(e) {
    console.log('上滑加載更多')
    console.info('scrollToLower', e);
    var hidden = this.data.hidden,
      loadingData = this.data.loadingData,
      that = this;
    if (hidden) {
      this.setData({
        hidden: false
      });
      console.info(this.data.hidden);
    }
    if (loadingData) {
      return;
    }
    this.setData({
      loadingData: true
    });
    // 加載數(shù)據(jù),模擬耗時(shí)操作  

    wx.showLoading({
      title: '數(shù)據(jù)加載中...',
    });

    setTimeout(function() {
      that.loadData(true, () => {
        that.setData({
          hidden: true,
          loadingData: false
        });
        wx.hideLoading();
      });
      console.info('上拉數(shù)據(jù)加載完成.');
    }, 2000);
  },
  scrollToUpper: function(e) {
    wx.showToast({
      title: '觸頂了...',
    })
  }
})
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市烛芬,隨后出現(xiàn)的幾起案子隧期,更是在濱河造成了極大的恐慌,老刑警劉巖赘娄,帶你破解...
    沈念sama閱讀 217,734評(píng)論 6 505
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件仆潮,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡遣臼,警方通過(guò)查閱死者的電腦和手機(jī)性置,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,931評(píng)論 3 394
  • 文/潘曉璐 我一進(jìn)店門(mén),熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)揍堰,“玉大人鹏浅,你說(shuō)我怎么就攤上這事∑链酰” “怎么了篡石?”我有些...
    開(kāi)封第一講書(shū)人閱讀 164,133評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)西采。 經(jīng)常有香客問(wèn)我,道長(zhǎng)继控,這世上最難降的妖魔是什么械馆? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,532評(píng)論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮武通,結(jié)果婚禮上霹崎,老公的妹妹穿的比我還像新娘。我一直安慰自己冶忱,他們只是感情好尾菇,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,585評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著,像睡著了一般派诬。 火紅的嫁衣襯著肌膚如雪劳淆。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 51,462評(píng)論 1 302
  • 那天默赂,我揣著相機(jī)與錄音沛鸵,去河邊找鬼。 笑死缆八,一個(gè)胖子當(dāng)著我的面吹牛曲掰,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播奈辰,決...
    沈念sama閱讀 40,262評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼栏妖,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了奖恰?” 一聲冷哼從身側(cè)響起吊趾,我...
    開(kāi)封第一講書(shū)人閱讀 39,153評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎房官,沒(méi)想到半個(gè)月后趾徽,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,587評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡翰守,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,792評(píng)論 3 336
  • 正文 我和宋清朗相戀三年孵奶,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片蜡峰。...
    茶點(diǎn)故事閱讀 39,919評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡了袁,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出湿颅,到底是詐尸還是另有隱情载绿,我是刑警寧澤,帶...
    沈念sama閱讀 35,635評(píng)論 5 345
  • 正文 年R本政府宣布油航,位于F島的核電站崭庸,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏谊囚。R本人自食惡果不足惜怕享,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,237評(píng)論 3 329
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望镰踏。 院中可真熱鬧函筋,春花似錦、人聲如沸奠伪。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,855評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至谨敛,卻和暖如春究履,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背佣盒。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,983評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工挎袜, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人肥惭。 一個(gè)月前我還...
    沈念sama閱讀 48,048評(píng)論 3 370
  • 正文 我出身青樓盯仪,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親蜜葱。 傳聞我的和親對(duì)象是個(gè)殘疾皇子全景,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,864評(píng)論 2 354

推薦閱讀更多精彩內(nèi)容

  • ??JavaScript 與 HTML 之間的交互是通過(guò)事件實(shí)現(xiàn)的爸黄。 ??事件,就是文檔或?yàn)g覽器窗口中發(fā)生的一些特...
    霜天曉閱讀 3,490評(píng)論 1 11
  • 第一部分 HTML&CSS整理答案 1. 什么是HTML5揭鳞? 答:HTML5是最新的HTML標(biāo)準(zhǔn)炕贵。 注意:講述HT...
    kismetajun閱讀 27,485評(píng)論 1 45
  • 本節(jié)介紹各種常見(jiàn)的瀏覽器事件。 鼠標(biāo)事件 鼠標(biāo)事件指與鼠標(biāo)相關(guān)的事件野崇,主要有以下一些称开。 click 事件,dblc...
    許先生__閱讀 2,437評(píng)論 0 4
  • Swift1> Swift和OC的區(qū)別1.1> Swift沒(méi)有地址/指針的概念1.2> 泛型1.3> 類(lèi)型嚴(yán)謹(jǐn) 對(duì)...
    cosWriter閱讀 11,101評(píng)論 1 32
  • 班上六十多個(gè)同學(xué)乓梨,大多數(shù)選擇了考研鳖轰,目前為止,做軟件開(kāi)發(fā)的不多扶镀,女生更是寥寥無(wú)幾蕴侣。無(wú)論是畢業(yè)之前,還是畢...
    小沐子_IT閱讀 308評(píng)論 0 0