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中的事件驱动
May 21 Javascript
解析jQuery的三种bind/One/Live事件绑定使用方法
Dec 30 Javascript
js动态创建及移除div的方法
Jun 03 Javascript
关于获取DIV内部内容报错的原因分析及解决办法
Jan 29 Javascript
jQuery插件formValidator实现表单验证
May 23 Javascript
AngularJS 文件上传控件 ng-file-upload详解
Jan 13 Javascript
使用vue.js实现checkbox的全选和多个的删除功能
Feb 17 Javascript
javascript作用域链与执行环境详解
Mar 25 Javascript
Javascript中的作用域及块级作用域
Dec 08 Javascript
详解Node.js中的Async和Await函数
Feb 22 Javascript
vue.js高德地图实现热点图代码实例
Apr 18 Javascript
微信小程序使用车牌号输入法的示例代码
Aug 20 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
浅谈Eclipse PDT调试PHP程序
2014/06/09 PHP
ThinkPHP单字母函数(快捷方法)使用总结
2014/07/23 PHP
基于Swoole实现PHP与websocket聊天室
2016/08/03 PHP
Laravel框架模板继承操作示例
2018/06/11 PHP
laravel 解决ajax异步提交数据,并还回填充表格的问题
2019/10/15 PHP
用js+xml自动生成表格的东西
2006/12/21 Javascript
jQuery中使用data()方法读取HTML5自定义属性data-*实例
2014/04/11 Javascript
遮罩层点击按钮弹出并且具有拖动和关闭效果(两种方法)
2015/08/20 Javascript
JavaScript实现页面定时刷新(定时器,meta)
2016/10/12 Javascript
深入理解Node.js 事件循环和回调函数
2016/11/02 Javascript
详解JSON1:使用TSQL查询数据和更新JSON数据
2016/11/21 Javascript
利用Ionic2 + angular4实现一个地区选择组件
2017/07/27 Javascript
Vue+Webpack完美整合富文本编辑器TinyMce的方法
2018/11/30 Javascript
原生JS实现随机点名项目的实例代码
2019/04/30 Javascript
no-vnc和node.js实现web远程桌面的完整步骤
2019/08/11 Javascript
JS+HTML实现自定义上传图片按钮并显示图片功能的方法分析
2020/02/12 Javascript
vue实现动态给id赋值,点击事件获取当前点击的元素的id操作
2020/11/09 Javascript
Python enumerate遍历数组示例应用
2008/09/06 Python
Python实现读取目录所有文件的文件名并保存到txt文件代码
2014/11/22 Python
Python3字符串学习教程
2015/08/20 Python
Python单链表简单实现代码
2016/04/27 Python
深入理解Python 关于supper 的 用法和原理
2018/02/28 Python
python集合比较(交集,并集,差集)方法详解
2018/09/13 Python
Python lambda表达式用法实例分析
2018/12/25 Python
Python判断是否json是否包含一个key的方法
2018/12/31 Python
Python何时应该使用Lambda函数
2019/07/02 Python
Python importlib动态导入模块实现代码
2020/04/16 Python
基于python SMTP实现自动发送邮件教程解析
2020/06/02 Python
Python Tornado核心及相关原理详解
2020/06/24 Python
Django Form设置文本框为readonly操作
2020/07/03 Python
蔻驰美国官网:COACH美国
2016/08/18 全球购物
Urban Decay官方网站:美国化妆品品牌
2020/06/04 全球购物
运动会致辞稿50字
2014/02/04 职场文书
财政局长个人总结
2015/03/04 职场文书
个人自我鉴定怎么写?
2019/07/01 职场文书
Consul在linux环境的集群部署
2022/04/08 Servers