1. 程式人生 > >微信小程式實戰篇-下拉重新整理與載入更多

微信小程式實戰篇-下拉重新整理與載入更多

下拉重新整理

實現下拉重新整理目前能想到的有兩種方式

  1. 呼叫系統的API,系統有提供下拉重新整理的API介面

     

    下拉重新整理API.png

  2. 監聽scroll-view,自定義下拉重新整理,還記得scroll-view裡面有一個bindscrolltoupper屬性嗎?忘記請自行回顧上一篇 微信小程式實戰篇-電商(二)當滾動到頂部/左邊,會觸發 scrolltoupper 事件,所以我們可以利用這個屬性,來實現下拉重新整理功能。

兩種方法都可以,第一種比較簡單,易上手,畢竟一些邏輯系統已經給你處理好了,第二種適合那種想要自定義下拉重新整理樣式的小程式,我們講解電商,就用第一種,系統提供的就好,主要是教會大家怎麼用。以首頁為例

  1. home.json 引數配置
"enablePullDownRefresh": true

我們哪個頁面需要下拉重新整理,就在哪個頁面對應的xxx.json檔案配置上面屬性,這個屬性從字面意思也可以知道,是否允許下拉重新整理,當然,如何你不想一個個配置允許下拉重新整理,你可以直接在全域性變數app.json的window裡面配置上面這個屬性,這樣整個專案都允許下拉重新整理了,這個一定要加的,因為系統預設是不具備下拉重新整理功能的

  1. home.js


  //下拉重新整理
  onPullDownRefresh:function()
  {
    wx.showNavigationBarLoading() //在標題欄中顯示載入
    
    //模擬載入
    setTimeout(function()
    {
      // complete
      wx.hideNavigationBarLoading() //完成停止載入
      wx.stopPullDownRefresh() //停止下拉重新整理
    },1500);
  },

** onPullDownRefresh** 下拉重新整理事件監聽,具體看一下里面的程式碼,wx.showNavigationBarLoading() 與wx.hideNavigationBarLoading() 這兩句話是用來控制小菊花的顯示和隱藏,由於我們現在還沒有講解網路請求,所以我就模擬了一下網路載入,通過setTimeout方法,寫一個時間延遲的方法,這個方法可以模擬網路載入所消耗的時間,還有就是當網路載入完成我們要停止下拉重新整理wx.stopPullDownRefresh() 。

這個到目前為止下拉重新整理的功能已經完成了,但是還不夠完美,還是有點怪怪的,就是下拉重新整理沒有動畫,有木有~我那時也感到奇怪,微信封裝的下拉重新整理怎麼可能這樣吶,後來我參考別人寫的程式碼,發現一個小坑,先看一下我填完坑的效果吧

怎麼樣,是不是順眼多了,想知道我是怎麼加入這個動畫的嘛,讓我來給你揭曉,其實很簡單,只需要一句話程式碼在app.json中window裡配置下面屬性,這個是配置整個系統的背景顏色,為什麼我配置系統顏色就會出現下拉重新整理了吶,原因就在下拉重新整理的動畫本身就有,只不過當我們沒配置背景顏色,系統預設就為白色,動畫也是白色,所以我們就看不到動畫效果,是不是有點坑,哈哈~~

"backgroundColor": "#f0145a"

載入更多

實現載入更多也同理有兩種方式

  1. 呼叫系統的API
  2. 監聽scroll-view,bindscrolltolower滑動到底部的監聽

我還是拿第一種實現方式講解,處理方式和下拉重新整理略有不同,不過也大同小異吧,還是以首頁為例

  1. home.js

  //載入更多
  onReachBottom: function () {
    console.log('載入更多')
    setTimeout(() => {
      this.setData({
        isHideLoadMore: true,
        recommends: [
          {
            goodId: 7,
            name: 'OLAY玉蘭油精油沐浴露玫瑰滋養二合一450ml',
            url: 'bill',
            imageurl: 'http://mz.djmall.xmisp.cn/files/product/20161213/148162245074.jpg',
            newprice: "¥36.60",
            oldprice: "¥40.00",
          },
          {
            goodId: 10,
            name: '蘭蔻玫瑰清瀅保溼柔膚水嫩膚水化妝水400ml補水保溼溫和不刺激',
            url: 'bill',
            imageurl: 'http://mz.djmall.xmisp.cn/files/product/20161201/148057937593.jpg',
            newprice: "¥30.00",
            oldprice: "¥80.00",
          }, {
            goodId: 11,
            name: 'Lancome/蘭蔻清瑩柔膚爽膚水/粉水400ml補水保溼玫瑰水化妝水',
            url: 'bill',
            imageurl: 'http://mz.djmall.xmisp.cn/files/product/20161201/148057953326.jpg',
            newprice: "¥30.00",
            oldprice: "¥80.00",
          },
          {
            goodId: 12,
            name: '美國CLINIQUE倩碧黃油無油/特效潤膚露125ml',
            url: 'bill',
            imageurl: 'http://mz.djmall.xmisp.cn/files/product/20161201/14805828016.jpg',
            newprice: "¥239.00",
            oldprice: "¥320.00",
          },
          {
            goodId: 13,
            name: '法國LANCOME蘭蔻柔皙輕透隔離防晒乳霜50ML2017年3月到期',
            url: 'bill',
            imageurl: 'http://mz.djmall.xmisp.cn/files/product/20161201/148058014894.jpg',
            newprice: "¥130.00",
            oldprice: "¥180.00",
          },
        ],
      })
    }, 1000)
  }

onReachBottom系統提供的觸底事件的監聽,和下拉重新整理一樣,我們也是模擬一些資料,加了一個時間延遲的事件,isHideLoadMore,一個自定義的值,用來控制顯示和隱藏載入控制元件

  1. home.wxml
 <view class="weui-loadmore" hidden="{{isHideLoadMore}}">
    <view class="weui-loading"></view>
    <view class="weui-loadmore__tips">正在載入</view>
  </view>

在home.wxml底部加入上面的程式碼,這是載入更多的控制元件,載入更多待遇就沒下拉重新整理待遇好,系統並沒有提供載入更多的控制元件動畫,所以我們需要自己製作

  1. home.wxss

/*  載入更多   */
.weui-loading {
  margin: 0 5px;
  width: 20px;
  height: 20px;
  display: inline-block;
  vertical-align: middle;
  -webkit-animation: weuiLoading 1s steps(12, end) infinite;
  animation: weuiLoading 1s steps(12, end) infinite;
  background: transparent url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxMjAiIGhlaWdodD0iMTIwIiB2aWV3Qm94PSIwIDAgMTAwIDEwMCI+PHBhdGggZmlsbD0ibm9uZSIgZD0iTTAgMGgxMDB2MTAwSDB6Ii8+PHJlY3Qgd2lkdGg9IjciIGhlaWdodD0iMjAiIHg9IjQ2LjUiIHk9IjQwIiBmaWxsPSIjRTlFOUU5IiByeD0iNSIgcnk9IjUiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDAgLTMwKSIvPjxyZWN0IHdpZHRoPSI3IiBoZWlnaHQ9IjIwIiB4PSI0Ni41IiB5PSI0MCIgZmlsbD0iIzk4OTY5NyIgcng9IjUiIHJ5PSI1IiB0cmFuc2Zvcm09InJvdGF0ZSgzMCAxMDUuOTggNjUpIi8+PHJlY3Qgd2lkdGg9IjciIGhlaWdodD0iMjAiIHg9IjQ2LjUiIHk9IjQwIiBmaWxsPSIjOUI5OTlBIiByeD0iNSIgcnk9IjUiIHRyYW5zZm9ybT0icm90YXRlKDYwIDc1Ljk4IDY1KSIvPjxyZWN0IHdpZHRoPSI3IiBoZWlnaHQ9IjIwIiB4PSI0Ni41IiB5PSI0MCIgZmlsbD0iI0EzQTFBMiIgcng9IjUiIHJ5PSI1IiB0cmFuc2Zvcm09InJvdGF0ZSg5MCA2NSA2NSkiLz48cmVjdCB3aWR0aD0iNyIgaGVpZ2h0PSIyMCIgeD0iNDYuNSIgeT0iNDAiIGZpbGw9IiNBQkE5QUEiIHJ4PSI1IiByeT0iNSIgdHJhbnNmb3JtPSJyb3RhdGUoMTIwIDU4LjY2IDY1KSIvPjxyZWN0IHdpZHRoPSI3IiBoZWlnaHQ9IjIwIiB4PSI0Ni41IiB5PSI0MCIgZmlsbD0iI0IyQjJCMiIgcng9IjUiIHJ5PSI1IiB0cmFuc2Zvcm09InJvdGF0ZSgxNTAgNTQuMDIgNjUpIi8+PHJlY3Qgd2lkdGg9IjciIGhlaWdodD0iMjAiIHg9IjQ2LjUiIHk9IjQwIiBmaWxsPSIjQkFCOEI5IiByeD0iNSIgcnk9IjUiIHRyYW5zZm9ybT0icm90YXRlKDE4MCA1MCA2NSkiLz48cmVjdCB3aWR0aD0iNyIgaGVpZ2h0PSIyMCIgeD0iNDYuNSIgeT0iNDAiIGZpbGw9IiNDMkMwQzEiIHJ4PSI1IiByeT0iNSIgdHJhbnNmb3JtPSJyb3RhdGUoLTE1MCA0NS45OCA2NSkiLz48cmVjdCB3aWR0aD0iNyIgaGVpZ2h0PSIyMCIgeD0iNDYuNSIgeT0iNDAiIGZpbGw9IiNDQkNCQ0IiIHJ4PSI1IiByeT0iNSIgdHJhbnNmb3JtPSJyb3RhdGUoLTEyMCA0MS4zNCA2NSkiLz48cmVjdCB3aWR0aD0iNyIgaGVpZ2h0PSIyMCIgeD0iNDYuNSIgeT0iNDAiIGZpbGw9IiNEMkQyRDIiIHJ4PSI1IiByeT0iNSIgdHJhbnNmb3JtPSJyb3RhdGUoLTkwIDM1IDY1KSIvPjxyZWN0IHdpZHRoPSI3IiBoZWlnaHQ9IjIwIiB4PSI0Ni41IiB5PSI0MCIgZmlsbD0iI0RBREFEQSIgcng9IjUiIHJ5PSI1IiB0cmFuc2Zvcm09InJvdGF0ZSgtNjAgMjQuMDIgNjUpIi8+PHJlY3Qgd2lkdGg9IjciIGhlaWdodD0iMjAiIHg9IjQ2LjUiIHk9IjQwIiBmaWxsPSIjRTJFMkUyIiByeD0iNSIgcnk9IjUiIHRyYW5zZm9ybT0icm90YXRlKC0zMCAtNS45OCA2NSkiLz48L3N2Zz4=) no-repeat;
  background-size: 100%;
}
.weui-loadmore {
  width: 65%;
  margin: 1.5em auto;
  line-height: 1.6em;
  font-size: 14px;
  text-align: center;
}
.weui-loadmore__tips {
  display: inline-block;
  vertical-align: middle;
}

這個是我們自定義的樣式,樣式很簡單,就是一個簡單的載入小菊花,這裡我要講解的是 weui-loading 樣式裡設定 background,data:image/svg+xml;base64這個是什麼意思吶,我們之前一般設定背景直接加入顏色,這個是background的另一種用法,加入圖片,這個圖片還有點特別是base64格式,並用svg繪製的,當然你還可以直接把url裡面寫入圖片路徑也是可以的,好,下面我們一起看一下效果吧!



作者:程式碼君_Coder
連結:https://www.jianshu.com/p/8c98af820fea
來源:簡書
著作權歸作者所有。商業轉載請聯絡作者獲得授權,非商業轉載請註明出處。