小程式開發:上拉載入資料
導語
需求是上拉載入資料,實際就是獲取分頁資料。後臺就是正常的ajax請求分頁資料,小程式部分稍複雜些,查了一些資料完成的, 但是資料的連結找不到了,不能放上以供參考了。
小程式頁面
涉及到資料迴圈,下面是簡單的例項
<view wx:for="{{array}}"> <view >{{item.name}}</view> <view >{{item.age}}</view> </view>
MVVM 的開發模式(例如 React, Vue),提倡把渲染和邏輯分離。簡單來說就是不要再讓 JS 直接操控 DOM,JS只需要管理狀態即可,然後再通過一種模板語法來描述狀態和介面結構的關係即可。
小程式JS部分
JS部分負責的是獲取資料,以及拼接資料
Page({ /** * 頁面的初始資料 */ data: { array: [], page: 1, isReachBottom: true // 是否上拉載入 }, // 獲取資料 getList: function () { var that = this; wx.request({ url: 'https://xxx', data: { p: that.data.page }, success: function (res) { if (res.data.message == 'success') { // 獲取成功,資料追加 var list = []; var count = res.data.data.length for (var i = 0; i < count; i++) { var data = {name: '', age: ''}; data.name = res.data.data[i].name; data.age = res.data.data[i].age; list.push(data); } Array.prototype.push.apply(that.data.array, list); that.setData({ array: that.data.array }) } else if (res.data.message == 'finish') { // 沒有資料,禁止再次上拉載入 that.setData({ isReachBottom: false }) } } }) }, /** * 頁面上拉觸底事件的處理函式 */ onReachBottom: function () { if (this.data.isReachBottom == true) { this.setData({ page: this.data.page + 1 }) this.getList() } } })
關於上拉觸底,還有這些特性