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 应用类库代码
Jun 02 Javascript
Extjs学习笔记之四 工具栏和菜单
Jan 07 Javascript
javascript实现日历控件(年月日关闭按钮)
Dec 12 Javascript
javascript制作幻灯片(360度全景图片)
Jul 28 Javascript
javascript数组克隆简单实现方法
Dec 16 Javascript
基于原生js淡入淡出函数封装(兼容IE)
Oct 20 Javascript
Vuex利用state保存新闻数据实例
Jun 28 Javascript
JavaScript中各数制转换全面总结
Aug 21 Javascript
jQuery实现的鼠标拖动画矩形框示例【可兼容IE8】
May 17 jQuery
vue项目从node8.x升级到12.x后的问题解决
Oct 25 Javascript
vue如何使用async、await实现同步请求
Dec 09 Javascript
Element-ui el-tree新增和删除节点后如何刷新tree的实例
Aug 31 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 数字左侧自动补0
2008/03/31 PHP
PHP函数http_build_query使用详解
2014/08/20 PHP
php微信公众号开发之现金红包
2018/04/16 PHP
使用 PHP Masked Package 屏蔽敏感数据的实现方法
2019/10/15 PHP
FireFox JavaScript全局Event对象
2009/06/14 Javascript
js事件冒泡实例分享(已测试)
2013/04/23 Javascript
form.submit()不能提交表单的错误原因及解决方法
2014/10/13 Javascript
iframe中子父类窗口调用JS的方法及注意事项
2015/08/25 Javascript
深入理解Java线程编程中的阻塞队列容器
2015/12/07 Javascript
详解JavaScript基于面向对象之继承
2015/12/13 Javascript
用jquery快速解决IE输入框不能输入的问题
2016/10/04 Javascript
Angular父组件调用子组件的方法
2018/04/02 Javascript
浅谈Node框架接入ELK实践总结
2019/02/22 Javascript
CKEditor 4.4.1 添加代码高亮显示插件功能教程【使用官方推荐Code Snippet插件】
2019/06/14 Javascript
VUE解决 v-html不能触发点击事件的问题
2019/10/28 Javascript
javascript+css实现俄罗斯方块小游戏
2020/06/28 Javascript
Ant Design的Table组件去除
2020/10/24 Javascript
nuxt引入组件和公共样式的操作
2020/11/05 Javascript
python使用socket进行简单网络连接的方法
2015/04/29 Python
python类装饰器用法实例
2015/06/04 Python
Mac在python3环境下安装virtualwrapper遇到的问题及解决方法
2019/07/09 Python
Win10系统下安装labelme及json文件批量转化方法
2019/07/30 Python
在jupyter notebook中调用.ipynb文件方式
2020/04/14 Python
Python数组拼接np.concatenate实现过程
2020/04/18 Python
python实现飞船游戏的纵向移动
2020/04/24 Python
自定义html标记替换html5新增元素
2008/10/17 HTML / CSS
数据库基础的一些面试题
2012/02/25 面试题
面包店的创业计划书范文
2014/01/16 职场文书
教师中国梦演讲稿
2014/04/23 职场文书
服装发布会策划方案
2014/05/22 职场文书
委托书格式
2014/08/01 职场文书
酒店端午节活动方案
2014/08/26 职场文书
中学生自我评价2015
2015/03/03 职场文书
2015年领导班子工作总结
2015/05/23 职场文书
军事博物馆观后感
2015/06/05 职场文书
创业计划书之农家乐
2019/10/09 职场文书