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 相关文章推荐
javascript 面向对象编程  function是方法(函数)
Sep 17 Javascript
JQuery live函数
Dec 24 Javascript
jquery miniui 教程 表格控件 合并单元格应用
Nov 25 Javascript
现代 JavaScript 开发编程风格Idiomatic.js指南中文版
May 28 Javascript
javascript 常用验证函数总结
Jun 28 Javascript
实例详解jQuery的无new构建
Aug 02 Javascript
深入理解javascript函数参数与闭包
Dec 12 Javascript
超全面的vue.js使用总结
Feb 12 Javascript
简单实现js轮播图效果
Jul 14 Javascript
关于TypeScript中import JSON的正确姿势详解
Jul 25 Javascript
解决js ajax同步请求造成浏览器假死的问题
Jan 18 Javascript
详解微信小程序中组件通讯
Oct 30 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
收音机另类DIY - 纸巾盒做外壳
2021/03/02 无线电
如何冲泡挂耳包咖啡?技巧是什么
2021/03/04 冲泡冲煮
php gd2 上传图片/文字水印/图片水印/等比例缩略图/实现代码
2010/05/15 PHP
thinkphp视图模型查询提示ERR: 1146:Table 'db.pr_order_view' doesn't exist的解决方法
2014/10/30 PHP
thinkPHP数据库增删改查操作方法实例详解
2016/12/06 PHP
PHP中echo与print区别点整理
2021/03/09 PHP
JQuery里面的几种选择器 查找满足条件的元素$(&quot;#控件ID&quot;)
2011/08/23 Javascript
解析javascript 浏览器关闭事件
2013/07/08 Javascript
JavaScript实现页面实时显示当前时间的简单实例
2013/07/20 Javascript
当json键为数字时的取值方法解析
2013/11/15 Javascript
DOM基础教程之使用DOM控制表单
2015/01/20 Javascript
javascript 数组操作详解
2015/01/29 Javascript
jQuery获得子元素个数的方法
2015/04/14 Javascript
如何利用JSHint减少JavaScript的错误
2016/08/23 Javascript
Nodejs+Socket.io实现通讯实例代码
2017/02/13 NodeJs
浅谈vue自定义全局组件并通过全局方法 Vue.use() 使用该组件
2017/12/07 Javascript
react-native 圆弧拖动进度条实现的示例代码
2018/04/12 Javascript
vue-router 源码之实现一个简单的 vue-router
2018/07/02 Javascript
openlayers实现地图测距测面
2020/09/25 Javascript
[59:59]EG vs IG 2018国际邀请赛小组赛BO2 第二场 8.16
2018/08/17 DOTA
Python模拟登录验证码(代码简单)
2016/02/06 Python
Python读取excel中的图片完美解决方法
2018/07/27 Python
python opencv圆、椭圆与任意多边形的绘制实例详解
2020/02/06 Python
Windows 下python3.8环境安装教程图文详解
2020/03/11 Python
基于CentOS搭建Python Django环境过程解析
2020/08/24 Python
python 利用Pyinstaller打包Web项目
2020/10/23 Python
Python Selenium库的基本使用教程
2021/01/04 Python
python中pdb模块实例用法
2021/01/15 Python
css3 实现元素弧线运动的示例代码
2020/04/24 HTML / CSS
介绍一下Linux中的链接
2016/05/28 面试题
更夫岗位责任制
2014/02/11 职场文书
政法学院毕业生求职信
2014/02/28 职场文书
普通党员个人剖析材料
2014/10/08 职场文书
社会主义核心价值观主题教育活动总结
2015/05/07 职场文书
大学生见习总结报告
2015/06/24 职场文书
入团申请书格式
2019/06/20 职场文书