vue使用mint-ui实现下拉刷新和无限滚动的示例代码


Posted in Javascript onNovember 06, 2017

在开发web-app中,总会遇到v-for出来的li会有很多,当数据达几百上千条的时候,一起加载出来会造成用户体验很差的效果。
这时候我们可以使用无限滚动和下拉刷新来实现控制显示的数量,当刷新到底部的边界的时候会触发无限滚动的事件,再次加载一定数量的条目。

还是拿在项目中的功能来举栗子介绍。

vue使用mint-ui实现下拉刷新和无限滚动的示例代码

有个列表,几千条数据,做分页查询,限制每次显示查询20条,每次拉到最后20条边缘的时候,触发无限滚动,这时候会出现加载图标,继续加载后续20条数据,加载到最后的时候会提示数据“加载完毕”。

vue使用mint-ui实现下拉刷新和无限滚动的示例代码

项目的ui使用的mint-ui,所以使用的无限滚动也是mint-ui里面的,详细参考官方文档

接下来给大家介绍代码实现:

1、为元素添加 v-infinite-scroll 指令即可使用无限滚动。滚动该元素,当其底部与被滚动元素底部的距离小于给定的阈值(通过 infinite-scroll-distance 设置)时,绑定到 v-infinite-scroll 指令的方法就会被触发。

<!--ul里面几个scoller就是无限滚动的几个api-->
<ul class="mui-table-view" v-infinite-scroll="loadMore" infinite-scroll-disabled="moreLoading" infinite-scroll-distance="0" infinite-scroll-immediate-check="false">
 <!--li数据遍历循环部分-->
 <li class="mui-table-view-cell" v-for="item in list">
  <a class="mui-navigate-right">
   <span class="mui-pull-left">{{item.name}}</span>
   <span class="mui-pull-right">{{item.date.substring(0,10)}}</span>
  </a>
 </li>
 <!--底部判断是加载图标还是提示“全部加载”-->
 <li class="more_loading" v-show="!queryLoading">
  <mt-spinner type="snake" color="#00ccff" :size="20" v-show="moreLoading&&!allLoaded"></mt-spinner>
  <span v-show="allLoaded">已全部加载</span>
 </li>
</ul>

2、script部分

<script>
 export default {
  data() {
   return {
    //初始化无限加载相关参数
    queryLoading: false,
    moreLoading: false,
    allLoaded: false,
    totalNum: 0,
    pageSize: 20,
    pageNum: 1,
   }
  },
  computed: {
   params() {
    return{
     //这里先定义要传递给后台的数据
     //然后将每次请求20条的参数一起提交给后台
     pageSize: this.pageSize
     }
   }
  },
  methods: {
   //无限加载函数
   loadMore() {
    if(this.allLoaded){
     this.moreLoading = true;
     return;
    }
    if(this.queryLoading){
     return;
    }
    this.moreLoading = !this.queryLoading;
    this.pageNum++;
    this.$http.post("请求后台数据的接口",Object.assign({pageNum:this.pageNum},this.params)).then((res) => {
     if(res.sData && res.sData.list){
      this.list = this.list.concat(res.sData.list);
      this.allLoaded = this.debtList.length==this.totalNum;
     }
     this.moreLoading = this.allLoaded;
    });
   }
  },
 }
</script>

到这里就可以实现无限滚动了,这里结合了mint-ui的Infinite scroll和Spinner

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
autoPlay 基于jquery的图片自动播放效果
Dec 07 Javascript
十个迅速提升JQuery性能让你的JQuery跑得更快
Dec 10 Javascript
jquery中的事件处理详细介绍
Jun 24 Javascript
浅谈Javascript 执行顺序
Dec 18 Javascript
推荐9款炫酷的基于jquery的页面特效
Dec 07 Javascript
基于jQuery实现弹出可关闭遮罩提示框实例代码
Jul 18 Javascript
jquery 多个radio的click事件实例
Dec 03 Javascript
jquery根据name取得select选中的值实例(超简单)
Jan 25 jQuery
详解Angular路由之路由守卫
May 10 Javascript
基于AngularJs select绑定数字类型的问题
Oct 08 Javascript
js实现录音上传功能
Nov 22 Javascript
vue用elementui写form表单时,在label里添加空格操作
Aug 13 Javascript
JS实现分页浏览横向图片(类轮播)实例代码
Nov 06 #Javascript
Angular实现类似博客评论的递归显示及获取回复评论的数据
Nov 06 #Javascript
vue自定义过滤器创建和使用方法详解
Nov 06 #Javascript
Bootstrap 树控件使用经验分享(图文解说)
Nov 06 #Javascript
vue复合组件实现注册表单功能
Nov 06 #Javascript
基于vue组件实现猜数字游戏
May 28 #Javascript
vue路由嵌套的SPA实现步骤
Nov 06 #Javascript
You might like
php 操作符与控制结构
2012/03/07 PHP
WordPress中用于获取文章信息以及分类链接的函数用法
2015/12/18 PHP
将PHP程序中返回的JSON格式数据用gzip压缩输出的方法
2016/03/03 PHP
js克隆对象、数组的常用方法介绍
2013/09/26 Javascript
如何正确使用Nodejs 的 c++ module 链接到 OpenSSL
2014/08/03 NodeJs
深入理解JavaScript中的call、apply、bind方法的区别
2016/05/30 Javascript
JavaScript 随机验证码的生成实例代码
2016/09/22 Javascript
原生js编写2048小游戏
2017/03/17 Javascript
JavaScript数据结构之数组的表示方法示例
2017/04/12 Javascript
Vue学习之路之登录注册实例代码
2017/07/06 Javascript
微信小程序MUI侧滑导航菜单示例(Popup弹出式,左侧不动,右侧滑动)
2019/01/23 Javascript
js判断一个对象是数组(函数)的方法实例
2019/12/19 Javascript
Node在Controller层进行数据校验的过程详解
2020/08/28 Javascript
基于vue+echarts数据可视化大屏展示的实现
2020/12/25 Vue.js
[59:42]Secret vs Alliacne 2019国际邀请赛小组赛 BO2 第一场 8.15
2019/08/17 DOTA
使用C语言扩展Python程序的简单入门指引
2015/04/14 Python
使用Python中的线程进行网络编程的入门教程
2015/04/15 Python
python使用append合并两个数组的方法
2015/04/28 Python
将Django框架和遗留的Web应用集成的方法
2015/07/24 Python
Python 爬虫学习笔记之多线程爬虫
2016/09/21 Python
python函数式编程学习之yield表达式形式详解
2018/03/25 Python
Matplotlib 生成不同大小的subplots实例
2018/05/25 Python
python将pandas datarame保存为txt文件的实例
2019/02/12 Python
关于Django Models CharField 参数说明
2020/03/31 Python
Python使用struct处理二进制(pack和unpack用法)
2020/11/12 Python
OpenCV+Python3.5 简易手势识别的实现
2020/12/21 Python
加拿大租车网站:Enterprise Rent-A-Car
2018/07/26 全球购物
公务员年总结的自我评价
2013/10/25 职场文书
函授本科自我鉴定
2013/11/03 职场文书
大学生村官工作感言
2014/01/10 职场文书
信息员培训方案
2014/06/12 职场文书
民族学专业大学生职业规划范文:清晰未来的构想
2014/09/20 职场文书
2014副镇长民主生活会个人对照检查材料思想汇报
2014/09/30 职场文书
小学教师党员承诺书
2015/04/27 职场文书
中小企业员工手册范本
2015/05/14 职场文书
2015年公司国庆放假通知
2015/07/30 职场文书