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 相关文章推荐
IE6 弹出Iframe层中的文本框“经常”无法获得输入焦点
Dec 27 Javascript
JavaScript 事件冒泡简介及应用
Jan 11 Javascript
JavaScript中“基本类型”之争小结
Jan 03 Javascript
解决jquery操作checkbox火狐下第二次无法勾选问题
Feb 10 Javascript
瀑布流布局代码一例
Apr 11 Javascript
JavaScript是如何实现继承的(六种方式)
Mar 31 Javascript
JS实现问卷星自动填问卷脚本并在两秒自动提交功能
Jun 17 Javascript
element ui 对话框el-dialog关闭事件详解
Feb 26 Javascript
Angular 利用路由跳转到指定页面的指定位置方法
Aug 31 Javascript
Vue-CLI项目中路由传参的方式详解
Sep 01 Javascript
vue实现将数据存入vuex中以及从vuex中取出数据
Nov 08 Javascript
ES6扩展运算符和rest运算符用法实例分析
May 23 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/06/07 PHP
php实现网站顶踩功能的完整前端代码
2015/07/19 PHP
PHP递归遍历多维数组实现无限分类的方法
2016/05/06 PHP
[原创]后缀就扩展名为js的文件是什么文件
2007/12/06 Javascript
js 数组实现一个类似ruby的迭代器
2009/10/27 Javascript
js post方式传递提交的实现代码
2010/05/31 Javascript
javascript中字符串的定义示例代码
2013/12/19 Javascript
js动态修改整个页面样式达到换肤效果
2014/05/23 Javascript
javascript复制粘贴与clipboardData的使用
2014/10/16 Javascript
node.js中的events.emitter.listeners方法使用说明
2014/12/10 Javascript
JQuery限制复选框checkbox可选中个数的方法
2015/04/20 Javascript
基于JavaScript制作霓虹灯文字 代码 特效
2015/09/01 Javascript
快速掌握Node.js事件驱动模型
2016/03/21 Javascript
Bootstrap每天必学之导航组件
2016/04/25 Javascript
DWR中各种java方法的调用
2016/05/04 Javascript
详解如何在vue中使用sass
2017/06/21 Javascript
浅析从vue源码看观察者模式
2018/01/29 Javascript
微信小程序开发问题之wx.previewImage
2018/12/25 Javascript
在Vue 中实现循环渲染多个相同echarts图表
2020/07/20 Javascript
Python和GO语言实现的消息摘要算法示例
2015/03/10 Python
Python的SQLAlchemy框架使用入门
2015/04/29 Python
Python利用itchat库向好友或者公众号发消息的实例
2019/02/21 Python
python实现简单图片物体标注工具
2019/03/18 Python
详解python的argpare和click模块小结
2019/03/31 Python
python 模拟银行转账功能过程详解
2019/08/06 Python
Pycharm配置PyQt5环境的教程
2020/04/02 Python
利用python 下载bilibili视频
2020/11/13 Python
惠普墨西哥官方商店:HP墨西哥
2016/12/01 全球购物
改变生活的男士内衣:SAXX Underwear
2019/08/28 全球购物
美国翻新电子产品商店:The Store
2019/10/08 全球购物
入学生会自荐书范文
2014/02/05 职场文书
经销商年会策划方案
2014/05/29 职场文书
政府采购方案
2014/06/12 职场文书
本溪关门山导游词
2015/02/09 职场文书
纪念建国70周年演讲稿
2019/07/19 职场文书
特别篇动画《总之就是非常可爱 ~制服~》PV公开,2022年夏季播出
2022/04/04 日漫