搜尋
首頁微信小程式微信開發微信小程式 scroll-view元件實作清單頁實例碼

scroll-view組件介紹

scroll-view是微信小程式提供的可滾動視圖組件,其主要作用是可以用來做手機端經常會看到的上拉加載下拉刷新列表頁!下面就以為例來講解一下這個元件的使用吧!

為app導入新page頁面

首先需要為我們的小程式導入新的page頁,專案根目錄打開app.json這個專案設定檔在裡面的pages數組添加"pages/allJoke/allJoke"然後設定底部導航在"tabBar"的列表項目("list")添加:

{
  "text": "列表",
  "pagePath": "pages/allJoke/allJoke",
  "iconPath": "images/note.png",
  "selectedIconPath": "images/noteHL.png"
 },

如果大家要了解具體配置的含義可以參考小程序配置文檔這裡不再贅述!

json設定頁

接下來就是我們新建page的設定頁了,在page目錄下新建一個目錄如alljoke,再在這個目錄下新建一個allJoke.json,複製下面程式碼到這個檔案裡面:

{
  "navigationBarTitleText": "笑话集锦",
  "enablePullDownRefresh": true
}

因為我們待會做下拉刷新時需要用到小程式提供的onPullDownRefresh方法,所以在設定項裡面必須開啟enablePullDownRefresh.另外一個選項是頁頂標題大家隨意設定也可以不用設定!

wxml視圖頁

好輪到視圖頁了,同樣的在alljoke目錄下新建一個alljoke.wxml頁面.wxml是小程式自創的一個視圖頁文檔類型,其寫法類似html,對於前端來說入門沒有難度.需要詳細了解的可以去閱讀wxml文檔.同樣複製以下程式碼到alljoke.wxml裡面

<view>
 <view>
  <scroll-view class="scroll" scroll-top="{{scrollTop}}" style="height:580px;" scroll-y="true" bindscroll="scrll"  bindscrolltolower="loadMore">
   <view class="block" wx:for="{{listLi}}" wx:for-item="item">
    <text>{{item.text}}</text>
   </view>  
  </scroll-view>
 </view>
 <view class="top" hidden="{{hidden}}" catchtap="goTop">⇧</view>
</view>

大家可以看到,我們的主角scroll-view也在這裡隆重登場了!帶過來的是一長串配置,就讓我來為大家講一下這些配置的作用吧!

微信小程序 scroll-view组件实现列表页实例代码

用到的選項都列出來了,還有一點需要大家特別注意的:

使用垂直滾動條時必須為組件設置一個固定高度就是上面代碼style裡面設定的高!切記切記!

更多資料請閱讀微信小程式scroll-view組件文檔

wxss樣式

同樣在alljoke目錄下面新進allJoke.wxsscss小程式的樣式和傳統css同樣在alljoke目錄下面。可以根據自己喜好自行設計,這裡我簡單做了一下樣式比較醜大家將就著用吧.(題外話:受不了的自己動手豐衣足食)

.block {
  border: 8px solid #71b471;
  margin: 20rpx 20rpx;
  padding: 10rpx;
  background-color: #fff;
  border-radius: 20rpx;
  text-align: center;
}
.top {
  width: 100rpx;
  height: 100rpx;
  line-height: 100rpx;
  background-color: #fff;
  position: fixed;
  bottom: 40rpx;
  right: 20rpx;
  text-align: center;
  font-size: 50rpx;
  opacity: .8;
  border-radius: 50%;
  border: 1px solid #fff; 
}

小程序文檔中關於樣式的介紹

邏輯部分

來到最後也是最重要的邏輯部分了!老規矩alljoke目錄下新建allJoke.js檔,先貼程式碼再慢慢講解:

Page({
 data:{
  listLi:[],
  page:1,
  scrollTop:0,
  done: false,
  hidden: true
 },
 onLoad:function(options){
  this.getList(1);
 },
 
 onPullDownRefresh: function(){
  wx.showToast({
   title: &#39;加载中&#39;,
   icon: &#39;loading&#39;
  });
  this.getList(1,true);
 },
 
 getList: function(page, stopPull){
  var that = this
  wx.request({
   url: &#39;https://wechat.sparklog.com/jokes&#39;,
   data: {
    page: page,
    per: &#39;20&#39;
   },
   method: &#39;GET&#39;, 
   success: function(res){
    if(page===1){
     that.setData({
      page: page+1,
      listLi: res.data,
      done: false
     })
     if(stopPull){
      wx.stopPullDownRefresh()      
     }
    }else{
     if(res.data<20){
      that.setData({
       page: page+1,
       listLi: that.data.listLi.concat(res.data),
       done: true
      }) 
     }else{
      that.setData({
       page: page+1,
       listLi: that.data.listLi.concat(res.data)
      }) 
     }  
    }
   },
  })
 },
 
 loadMore: function(){
  var done = this.data.done;
  if(done){
   return
  }else{
   wx.showToast({
    title: &#39;加载中&#39;,
    icon: &#39;loading&#39;,
    duration: 500
   });
   var page = this.data.page;
   this.getList(page)
  }
 },
 
 scrll: function(e){
  var scrollTop = e.detail.scrollTop
  if(scrollTop>600){
   this.setData({
    scrollTop: 1,
    hidden: false   
   })
  }else{
   this.setData({
    scrollTop: 1,
    hidden: true 
   });
  }
 },
 
 goTop: function(){
  this.setData({
   scrollTop:0,
   hidden: true
  })
 }
})

大家可以看到首先我們需要用page()函數註冊頁,然後在data裡面定義一些初始化資料.onLoad是這個頁面的生命週期函數,頁面載入時會調用到它.我們在頁面載入時調用了自訂的getList函數.這個函數接收兩個參數,第一個參數是要載入的頁面,第二個參數是布林值,用來判斷是下拉刷新調用的這個函數,還是頁面載入時調用的這個函數!接下來onPullDownRefresh是小程式提供的下拉刷新函數,裡面wx.showToast顯示訊息提示框,用來提示使用者正在載入,loadMore是捲動到底部觸發的事件.函式裡面會檢查是否已經載入了全部清單項目,如果已經載入了全部清單項目會return掉,如果資料庫還有清單項目,上拉到底部加載下一頁!scrll函數是滾動時觸發的函數,可以看到這個函數會判斷滾動條位置是否大於六百,如果大於六百顯示點擊直達底部的按鈕,如果小於六百隱藏直達頂部的按鈕.同時會更新滾動條位置的參數.剛剛在講wxml時已經講過scroll-view組件設置垂直滾動條位置scroll-top設定項時如果參數一樣,頁面不會重新渲染,我們就是利用了這一點,如果要到達頂部,位置必定是'0',滾動時觸發scrll函數,我們把位置資訊設為'1',因為滾動函數會反復觸發,所以此時頁面是不會渲染的.也就是說由於位置設定參數都是設定為'1'不變,導致scroll-top設定項不會生效為goTop函數的直達頂部(把參數變為'0'提供機會).最後就是直達頂部按鈕的函數了,可以看到它是把位置資訊變成'0',參數變化scroll-top設定生效,頁面直達頂部.最後再透過改變hidden這個參數把自己(直達頂部按鈕)給隱藏掉了!

結尾

ok,透過上面的步驟我們終於實現了下拉刷新上拉加載的列表頁功能了,從上面我們可以看到微信提供的接口和api還是挺全面的,要實現一個功能總體來說要比原生js實現要簡單一些!

感謝閱讀,希望能幫助大家,謝謝大家對本站的支持!

更多微信小程式 scroll-view元件實作清單頁實例碼相關文章請關注PHP中文網!


陳述
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
1 個月前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳圖形設置
1 個月前By尊渡假赌尊渡假赌尊渡假赌
威爾R.E.P.O.有交叉遊戲嗎?
1 個月前By尊渡假赌尊渡假赌尊渡假赌

熱工具

VSCode Windows 64位元 下載

VSCode Windows 64位元 下載

微軟推出的免費、功能強大的一款IDE編輯器

MantisBT

MantisBT

Mantis是一個易於部署的基於Web的缺陷追蹤工具,用於幫助產品缺陷追蹤。它需要PHP、MySQL和一個Web伺服器。請查看我們的演示和託管服務。

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

強大的PHP整合開發環境

Dreamweaver Mac版

Dreamweaver Mac版

視覺化網頁開發工具

MinGW - Minimalist GNU for Windows

MinGW - Minimalist GNU for Windows

這個專案正在遷移到osdn.net/projects/mingw的過程中,你可以繼續在那裡關注我們。 MinGW:GNU編譯器集合(GCC)的本機Windows移植版本,可自由分發的導入函式庫和用於建置本機Windows應用程式的頭檔;包括對MSVC執行時間的擴展,以支援C99功能。 MinGW的所有軟體都可以在64位元Windows平台上運作。