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 12 Javascript
Javascript中的isNaN函数使用说明
Nov 10 Javascript
JQuery调webservice实现邮箱验证(检测是否可用)
May 21 Javascript
js实现回放拖拽轨迹从过程上进行分析
Jun 26 Javascript
JavaScript学习笔记之JS对象
Jan 22 Javascript
基于JS2Image实现圣诞树代码
Dec 24 Javascript
基于javascript实现样式清新图片轮播特效
Mar 30 Javascript
js实现div模拟模态对话框展现URL内容
May 27 Javascript
js表单元素checked、radio被选中的几种方法(详解)
Aug 22 Javascript
js自定义QQ菜单效果
Jan 10 Javascript
JavaScript 五大常见函数
Mar 23 Javascript
基于JS实现数字动态变化显示效果附源码
Jul 18 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的字符串用法小结
2010/06/08 PHP
php 学习资料零碎东西
2010/12/04 PHP
PHP使用mongoclient简单操作mongodb数据库示例
2019/02/08 PHP
用js做一个小游戏平台 (一)
2009/12/29 Javascript
Jquery实现Div上下移动示例
2014/04/23 Javascript
node.js 开发指南 ? Node.js 连接 MySQL 并进行数据库操作
2014/07/29 Javascript
浅谈下拉菜单中的Option对象
2015/05/10 Javascript
基于Css3和JQuery实现打字机效果
2015/08/11 Javascript
js判断手机号运营商的方法
2015/10/23 Javascript
JavaScript类型检测之typeof 和 instanceof 的缺陷与优化
2016/01/13 Javascript
JavaScript 随机验证码的生成实例代码
2016/09/22 Javascript
深入理解jQuery()方法的构建原理
2016/12/05 Javascript
vue中动态设置meta标签和title标签的方法
2018/07/11 Javascript
laravel-admin 与 vue 结合使用实例代码详解
2019/06/04 Javascript
微信小程序点击按钮动态切换input的disabled禁用/启用状态功能
2020/03/07 Javascript
JS运算符优先级与表达式示例详解
2020/09/04 Javascript
vue实现树状表格效果
2020/12/29 Vue.js
python中的__init__ 、__new__、__call__小结
2014/04/25 Python
使用Python读写文本文件及编写简单的文本编辑器
2016/03/11 Python
Python开发的HTTP库requests详解
2017/08/29 Python
python pandas 对series和dataframe的重置索引reindex方法
2018/06/07 Python
Python文件读写保存操作的示例代码
2018/09/14 Python
在PyCharm中三步完成PyPy解释器的配置的方法
2018/10/29 Python
Python3实现爬虫爬取赶集网列表功能【基于request和BeautifulSoup模块】
2018/12/05 Python
Tensorflow中k.gradients()和tf.stop_gradient()用法说明
2020/06/10 Python
多视角3D逼真HTML5水波动画
2016/03/03 HTML / CSS
英国在线房屋中介网站:Yopa
2018/01/09 全球购物
澳大利亚宠物食品和药物在线:Jumbo Pets
2018/03/24 全球购物
学前教育专业毕业生自荐信
2013/10/03 职场文书
门卫工作岗位职责
2013/12/17 职场文书
数控技术专业毕业自荐书范文
2014/02/05 职场文书
群众路线教育实践活动个人对照检查材料思想汇报(社区班子)
2014/10/06 职场文书
综合办公室主任岗位职责
2015/04/01 职场文书
工程部岗位职责范本
2015/04/11 职场文书
陶瓷类经典广告语集锦
2019/10/25 职场文书
mybatis调用sqlserver存储过程返回结果集的方法
2021/05/08 SQL Server