在微信项目中有应用过几个上拉加载更多的组件,但总会出现一些兼容性方面的bug,需要各种补漏(注:组件都是基于iscroll实现的, iscroll原本就有些坑)。Vux也有提供Scroller组件实现上拉加载或下拉刷新,但官方已经不再维护该组件(未实际使用过,不知是否有坑)。所以这次我们采用更为简单的方式来实现加载更多数据效果,废话不多说,直接看效果图。

实际效果图

实现思路

组件模板

<template><div><div v-for="(item,idx) in tableData":key="idx"class="box"><slot :item="item"></slot></div><load-more v-if="loading"tip="正在加载"></load-more><load-more v-else:show-loading="false"@click.prevent.native="load":tip="tipText"background-color="#fbf9fe"></load-more></div>
</template>

结合后端分页查询接口

export default {
data () {const _this = thisreturn {tableData: [], // 列表数据loading: false,isLoadMore: true,// 查询参数queryJson: (() => {const { params } = _thisreturn params})(),pageIndex: 1, // 当前页total: 0 // 数据总条数}
},
methods: {load () {if (!this.isLoadMore) {return}this.fetch()},fetch () {this.loading = truelet { url, pageSize, pageIndex, sortName, sordName, listField, totalField,pageIndexField, pageSizeField, sortNameField, sordField } = thislet params = Object.assign({}, this.queryJson)// 分页参数params = Object.assign(params, {[pageIndexField]: pageIndex,[pageSizeField]: pageSize})// 排序参数params = Object.assign(params, {[sortNameField]: sortName,[sordField]: sordName})axios.get(url, { params }).then(response => {this.total = response[totalField] // 总数let result = response[listField] // 当次加载的数据// 是否还可以加载更多 此种逻辑设计存在缺陷,如果在浏览列表的同时,又增加了新的记录this.isLoadMore = result.length === pageSizethis.pageIndex++for (let item of result) {this.tableData.push(item)}}).catch(error => {console.error('获取数据失败 ', error)}).finally(() => {this.loading = false})}}}

变更loadmore组件内容

判断isLoadMore(是否正在加载)的值,以及tableData(显示数据列表内容) 的长度来控制底部loadmore组件显示的内容

computed: {tipText () {// 暂无数据, 没有更多数据, 轻按加载更多if (!this.tableData || this.tableData.length === 0) {return '暂无数据'}return this.isLoadMore ? '轻按加载更多' : '没有更多数据'}},

监听查询参数的变化

watch: {params: function (val) {this.queryJson = valthis.pageIndex = 1this.tableData = []this.fetch()}},

具体应用

<template><div><group title='钱包明细'><vloadmore v-bind="table"><template slot-scope="{ item }"><cell-box><!-- 具体每一行的布局 --></cell-box></template></vloadmore></group></div>
</template>
<script>
import { Group, CellBox } from 'vux'
import { CsLoadMore } from '@/components'
export default {data () {return {table: {url: '/pms/wallet/getpagelist',pageSize: 3}}},components: {Group,CellBox,vloadmore: CsLoadMore}
}
</script>

源码

组件源码请查看https://github.com/yinboxie/BlogExampleDemo/tree/master/Vux

转载于:https://www.cnblogs.com/xyb0226/p/11146464.html

vux loadmore + axios 实现点击加载更多相关推荐

  1. html加载更多实现代码,如何实现点击“加载更多”?

    看你的样子用的应该是java写的后端(, ...).为了实现加载更多,其实就是点击按钮后在不刷新页面的情况下添加更多的内容显示到当前页面中.用ajax拉取数据,前提是后端能够根据条件(例如:页号.分类 ...

  2. 前端vue里面点击加载更多_js实现『加载更多』功能实例

    DEMO : 滚动加载示例 关于如何实现『加载更多』功能,网上有插件可用,例如比较著名的使用iscroll.js实现的上拉加载更多.下拉刷新功能. 但实际用起来却是很麻烦.由于是第三方插件,要按照对方 ...

  3. PHP+Ajax点击加载更多列表数据实例

    PHP+Ajax点击加载更多列表数据实例 一款简单实用的PHP+Ajax点击加载更多列表数据实例,实现原理:通过"更多"按钮向服务端发送Ajax请求,PHP根据分页参数查询将最新的 ...

  4. 底部点击加载更多功能的简单实现

    底部点击加载更多功能的简单实现 ​ 主要思路是:后台将数据按10个一页进行处理,前端请求的时候传递的分页参数就是页数.从主页选择一个类型去到列表页,会先从后端请求10条数据渲染到页面上.点击加载更多的 ...

  5. php ajax 上拉显示更多,PHP+Ajax点击加载更多内容 -这个效果好,速度快,只能点击更多加载,不能滚动自动加载...

    这个效果好,速度快,只能点击更多加载,不能滚动自动加载 一.HTML部分 ::点击加载更多内容:: 引入jQuery插件和jquery.more.js加载更多插件 jQuery $(function( ...

  6. 前端vue里面点击加载更多_vue 原生添加滚动加载更多

    vue中添加滚动加载更多,因为是单页面所以需要在跳出页面时候销毁滚动,要不会出现错乱.我们在mounted建立滚动,destroyed销毁滚动. mounted () { window.addEven ...

  7. 微信小程序上拉加载 加载更多数据 触底加载 点击加载更多数据

    开发需求 进入页面,加载初始数据,当向上拖动页面至底部,自动加载新的数据,即上拉加载更多数据. 演示 index.wxml <!-- 数据列表 --> <view wx:for=&q ...

  8. Vue - 列表分页懒加载 / 点击 “加载更多“ 按钮请求接口数据(如何实现类似用户手动点击 “查看更多“ ,然后请求分页懒加载数据填充)可适用于 Nuxt.js 、uni-app 等 Vue.js

    前言 如果您需要 "页面上拉触底" 加载,请参考:uni-app | 微信小程序 本文从 0-1 带您完成该功能,支持 Vue.js / Nuxt.js 等, 如下图所示,支持分页 ...

  9. uniapp实现点击加载更多

    使用场景 举个栗子:外卖app当订单商品数量比较多时,不方便一次性展示出来.通常会展示一部分,并在页面给出一个查看更多功能.点击后即可自定义展示剩余内容,比如可以每次点击多展示N个内容,或展示所有. ...

最新文章

  1. Softer-NMS:CMU旷视最新论文提出定位更加精确的目标检测算法
  2. 面试官出的MySQL索引问题,这篇文章全给你解决!
  3. 北航研究生计算机系论文手册,计算机学院-北航研究生院-北京航空航天大学.doc...
  4. adapt和adopt的区别_“适应”是“ adapt ”还是“ adopt ”?看完你就会了
  5. DriveInfo类取得计算机的磁盘信息
  6. 云服务器装哪些版本的系统好,云服务器按装什么系统好
  7. 深入理解jvm jdk1,7(1)
  8. platform_device_add()函数分析
  9. HDU1052 田忌赛马 贪心
  10. Java EE服务技术
  11. HDU 1042 N!( 高精度乘法水 )
  12. RDP报表工具的环境搭建
  13. 2018最新麻瓜编程实用主义学Python课程
  14. “梦回三国”系列总结
  15. Backtrader策略实现(一) | 简单双均线
  16. 使用R语言绘制graph:无向图(ug)和有向无环图(dag)
  17. 我说,执着造就了成功
  18. Numpy中flatten与ravel的区别
  19. 带你了解什么是论文查重
  20. 订单测试点(欢迎补充)

热门文章

  1. 关于Java 8 forEach
  2. 设计模式教程(Design Patterns Tutorial)笔记之一 创建型模式(Creational Patterns)...
  3. Python入门基础之条件判断、循环、dict和set
  4. cf723d Lakes in Berland
  5. block,inline和inline-block
  6. EasyUI——Dialog自定义Toolbar和buttons
  7. Android开发笔记(一)手势识别
  8. LeetCode(589)——N叉树的前序遍历(JavaScript)
  9. 【Vue】—解构插槽 Prop以及具名插槽的缩写
  10. JavaScript学习(七十七)—统计字符串中出现次数最多的字符和每个字符出现的次数