IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 移动开发 -> 微信小程序触底自动加载数据列表和手动加载数据列表(云数据库版) -> 正文阅读

[移动开发]微信小程序触底自动加载数据列表和手动加载数据列表(云数据库版)

一、触底自动加载数据

1.js文件中顶部添加以下代码

const db = wx.cloud.database()
const data = db.collection('数据库中要引入的集合名')
var row = 5 //每次从数据库中加载的条数
var pages = 0 //当前页面

2.在onLoad函数中添加数据库查询命令


onLoad: function (options) {
    news.limit(row).get({ 
      success: res =>{
        that.setData({
          dataList: res.data
        })
      }
    })
},

3.触底自动加载设置

  /**
   * 页面上拉触底事件的处理函数
   */
onReachBottom: function () { 
    //翻下一页
    pages++
    //获取当前页面的新闻记录
    data.skip(row * pages).limit(row).get({ //skip(row * pages):查询结果跳过row * pages条记录
      success: res =>{
        //获取原有的新闻记录
        let old_data = this.data.dataList
        // 获取新页面的新闻记录
        let new_data = res.data
        //更新首页新闻列表
        this.setData({
          dataList: old_data.concat(new_data) //concat()用于连接字段或字符
        })

      }
},

二、手动刷新数据

1.制作页面刷新按钮

//xx.wxml文件
<image slot="left" src="../../../images/shuaxin.png" class="refresh" animation="{{animation}}" bindtap="refresh"></image>

2.刷新按钮的动画和页面中信息的加载

//xx.js文件
var _animation; // 动画实体
var _animationIndex = 0; //动画执行次数index(当前执行了多少次)
var _animationIntervalId = -1; // 动画定时任务id,通过setInterval来达到无限旋转,记录id,用于结束定时任务
const _ANIMATION_TIME = 300; //动画播放一次的时长ms
Page({

  /**
   * 页面的初始数据
   */
  data: {
    page: 0,
    pageCount: 6,
    haveMoreData: true,
    loadMore: false,
    loading: false,
    refresh: false,
}

/**
   * 生命周期函数--监听页面初次渲染完成
   */
  onReady: function () {
    _animationIndex = 0;
    _animationIntervalId = -1;
    this.data.animation = '';

    _animation = wx.createAnimation({
      duration: _ANIMATION_TIME,
      timingFunction: 'linear',
      delay: 0,
      transformOrigin: '50% 50% 0'
    })

    this.refresh()
  },

 /**
   * 实现image旋转动画,每次旋转120*n度
   */
  rotateAni: function (n) {
    _animation.rotate(120 * (n)).step()
    this.setData({
      animation: _animation.export()
    })
  },
  /**
   * 开始旋转
   */
  startAnimationInterval: function () {
    var that = this;
    that.rotateAni(++_animationIndex); //进行一次旋转
    _animationIntervalId = setInterval(function () {
      that.rotateAni(++_animationIndex);
    }, _ANIMATION_TIME); //每间隔 _ANIMATION_TIME进行一次旋转
  },
  /**
   * 停止旋转
   */
  stopAnimationInterval: function () {
    if (_animationIntervalId > 0) {
      clearInterval(_animationIntervalId);
      _animationIntervalId = 0;
    }
  },

/**
   * 自定义函数--点击刷新按钮
   */
  refresh() {
    if (this.data.loading) {
      return
    }
    this.setData({
      refresh: true,
    })
    this.startAnimationInterval();
    this.getList();


  },
/**
   * 自定义函数--获取数据库数据
   */
  getList() {
    if (this.data.loading) {
      return
    } else {
      this.setData({
        loading: true
      })
    }
    var currentPage = this.data.page;
    // 如果是刷新,要设置请求的页码为0
    if (this.data.refresh) {
      currentPage = 0;
    }
    db.collection('data')
      .orderBy('_openid', 'desc') // 降序排列
      .skip(currentPage * this.data.pageCount)
      .limit(this.data.pageCount)
      .get()
      .then(res => {
        console.log("getList:", res)
        if (this.data.refresh) {
          this.setData({
            list: []
          })
        }
        if (res.data.length > 0) {
          for (var i = 0; i < res.data.length; i++) {
            res.data[i].createTime = this.js_date_time(res.data[i].createTime);
            this.data.list.push(res.data[i])
          }
          this.setData({
            list: this.data.list
          })
          this.setData({
            refresh: false,
            loading: false,
            page: currentPage + 1
          })

          if (res.data.length == this.data.pageCount) {
            this.setData({
              haveMoreData: true
            })
          } else {
            this.setData({
              haveMoreData: false
            })
          }
        }
        this.stopAnimationInterval();


      })
      .catch(error => {
        console.log("getList error:", error)
        this.stopAnimationInterval();
        this.setData({
          refresh: false,
          loading: false
        })
      })

  },

/**
   * 页面上拉触底事件的处理函数
   */
  onReachBottom: function () {
    if (this.data.loading) {
      return
    } else {
      this.setData({
        loadMore: true
      })

      setTimeout(() => {
        this.getList();
      }, 3000);
    }
    
  },

  

  移动开发 最新文章
Vue3装载axios和element-ui
android adb cmd
【xcode】Xcode常用快捷键与技巧
Android开发中的线程池使用
Java 和 Android 的 Base64
Android 测试文字编码格式
微信小程序支付
安卓权限记录
知乎之自动养号
【Android Jetpack】DataStore
上一篇文章      下一篇文章      查看所有文章
加:2021-11-11 12:49:24  更:2021-11-11 12:49:41 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 4:12:16-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码