vue mintui-Loadmore结合实现下拉刷新和上拉加载示例


Posted in Javascript onOctober 12, 2017

mintui是饿了么团队针对vue开发的移动端组件库,方便实现移动端的一些功能,这里只用了Loadmore功能实现移动端的上拉分页刷新,下拉加载数据,废话不说上代码。

<template> 
 <div class="main-body" :style="{'-webkit-overflow-scrolling': scrollMode}"> 
  <v-loadmore :top-method="loadTop" :bottom-method="loadBottom" :bottom-all-loaded="allLoaded" :auto-fill="false" ref="loadmore"> 
   <ul class="list" v-for="(val, key) in pageList"> 
    <li> 
     <div>我是小11</div> 
     <div>我是小11</div> 
    </li> 
   </ul> 
  </v-loadmore> 
 </div> 
</template> 
<script> 
 import {Loadmore} from 'mint-ui'; 
 export default { 
  data:function() { 
   return { 
    searchCondition:{ //分页属性 
     pageNo:"1", 
     pageSize:"10" 
    }, 
    pageList:[], 
    allLoaded: false, //是否可以上拉属性,false可以上拉,true为禁止上拉,就是不让往上划加载数据了 
    scrollMode:"auto" //移动端弹性滚动效果,touch为弹性滚动,auto是非弹性滚动 
   } 
  }, 
  components: { 
   'v-loadmore':Loadmore // 为组件起别名,vue转换template标签时不会区分大小写,例如:loadMore这种标签转换完就会变成loadmore,容易出现一些匹配问题 
               // 推荐应用组件时用a-b形式起名 
  }, 
  mounted(){ 
   this.loadPageList(); //初次访问查询列表 
  }, 
  methods: { 
   loadTop:function() { //组件提供的下拉触发方法 
    //下拉加载 
    this.loadPageList(); 
    this.$refs.loadmore.onTopLoaded();// 固定方法,查询完要调用一次,用于重新定位 
   }, 
   loadBottom:function() { 
    // 上拉加载 
    this.more();// 上拉触发的分页查询 
    this.$refs.loadmore.onBottomLoaded();// 固定方法,查询完要调用一次,用于重新定位 
   }, 
   loadPageList:function (){ 
     // 查询数据 
    this.api.PageList(this.searchCondition).then(data =>{ 
     // 是否还有下一页,加个方法判断,没有下一页要禁止上拉 
     this.isHaveMore(data.result.haveMore); 
     this.pageList = data.result.pageList; 
     this.$nextTick(function () { 
      // 原意是DOM更新循环结束时调用延迟回调函数,大意就是DOM元素在因为某些原因要进行修改就在这里写,要在修改某些数据后才能写, 
      // 这里之所以加是因为有个坑,iphone在使用-webkit-overflow-scrolling属性,就是移动端弹性滚动效果时会屏蔽loadmore的上拉加载效果, 
      // 花了好久才解决这个问题,就是用这个函数,意思就是先设置属性为auto,正常滑动,加载完数据后改成弹性滑动,安卓没有这个问题,移动端弹性滑动体验会更好 
      this.scrollMode = "touch"; 
     }); 
    }); 
   }, 
   more:function (){ 
     // 分页查询 
    this.searchCondition.pageNo = parseInt(this.searchCondition.pageNo) + 1; 
    this.api.loadPageList(this.searchCondition).then(data=>{ 
     this.pageList = this.pageList.concat(data.result.pageList); 
     this.isHaveMore(data.result.haveMore); 
    }); 
   }, 
   isHaveMore:function(isHaveMore){ 
    // 是否还有下一页,如果没有就禁止上拉刷新 
    this.allLoaded = true; //true是禁止上拉加载 
    if(isHaveMore){ 
     this.allLoaded = false; 
    } 
   } 
  } 
 } 
</script>

花了点时间整理了下代码,复制后改改就能用了,当然你要有基本的vue开发框架,并且有点开发基础,代码很简单,这个插件很好用,效果不错,加载时的文字什么的可以自己修改,比如增加箭头什么的,可以看文档。

PS:有个坑一定要注意就是注释里说的iPhone里loadmore和-webkit-overflow-scrolling属性冲突无法上拉问题,还是vue学的不精,浪费了太多时间,引以为戒

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
Document对象内容集合(比较全)
Sep 06 Javascript
jQuery EasyUI API 中文文档 - Parser 解析器
Sep 29 Javascript
JavaScript的递归之递归与循环示例介绍
Aug 05 Javascript
jQuery中:has选择器用法实例
Dec 30 Javascript
jquery实现漂亮的二级下拉菜单代码
Aug 26 Javascript
JavaScript实现带箭头标识的多级下拉菜单效果
Aug 27 Javascript
JS使用eval解析JSON的注意事项分析
Nov 14 Javascript
谈谈encodeURI和encodeURIComponent以及escape的区别与应用
Nov 24 Javascript
理解jquery事件冒泡
Jan 03 Javascript
微信运维交互机器人的示例代码
Nov 12 Javascript
js前端如何写一个精确的倒计时代码
Oct 25 Javascript
vant时间控件使用方法详解
Dec 24 Javascript
AngularJS 中的数据源的循环输出
Oct 12 #Javascript
详解微信小程序中的页面代码中的模板的封装
Oct 12 #Javascript
BootStrap Validator 根据条件在JS中添加或移除校验操作
Oct 12 #Javascript
Angular实现预加载延迟模块的示例
Oct 12 #Javascript
使用cookie绕过验证码登录的实现代码
Oct 12 #Javascript
bootstrap可编辑下拉框jquery.editable-select
Oct 12 #jQuery
使用原生js封装的ajax实例(兼容jsonp)
Oct 12 #Javascript
You might like
PHP对象转换为数组函数(递归方法)
2012/02/04 PHP
PHP使用PHPMailer发送邮件的简单使用方法
2013/11/12 PHP
PHP独立Session数据库存储操作类分享
2014/06/11 PHP
thinkPHP自动验证、自动添加及表单错误问题分析
2016/10/17 PHP
基于JQuery的浮动DIV显示提示信息并自动隐藏
2011/02/11 Javascript
JavaScript全局函数使用简单说明
2011/03/11 Javascript
Javascript玩转继承(一)
2014/05/08 Javascript
深入理解JavaScript系列(47):对象创建模式(上篇)
2015/03/04 Javascript
javascript检测两个数组是否相似
2015/05/19 Javascript
Bootstrap中的表单验证插件bootstrapValidator使用方法整理(推荐)
2016/06/21 Javascript
JS中如何实现Laravel的route函数详解
2017/02/12 Javascript
JS基于面向对象实现的多个倒计时器功能示例
2017/02/28 Javascript
强大的JavaScript响应式图表Chartist.js的使用
2017/09/13 Javascript
vue组件父子间通信之综合练习(聊天室)
2017/11/07 Javascript
使用Node.js写一个代码生成器的方法步骤
2019/05/10 Javascript
jquery实现简单自动轮播图效果
2020/07/29 jQuery
基于Vue全局组件与局部组件的区别说明
2020/08/11 Javascript
Python3通过Luhn算法快速验证信用卡卡号的方法
2015/05/14 Python
python 捕获 shell/bash 脚本的输出结果实例
2017/01/04 Python
用python实现对比两张图片的不同
2018/02/05 Python
Python面向对象封装操作案例详解 II
2020/01/02 Python
Python底层封装实现方法详解
2020/01/22 Python
Python中关于logging模块的学习笔记
2020/06/03 Python
英国123鲜花网站:123 Flowers
2019/07/07 全球购物
乌克兰移动电子产品和相关配件的在线商店:iTMag
2020/03/16 全球购物
Ruby如何进行文件操作
2014/07/17 面试题
师范生自荐信范文
2013/10/06 职场文书
菜篮子工程实施方案
2014/03/08 职场文书
初中班主任评语
2014/04/24 职场文书
五四青年节优秀演讲稿范文
2014/05/28 职场文书
感恩教育月活动总结
2014/07/07 职场文书
2014大学生中国梦主题教育学习思想汇报
2014/09/10 职场文书
党政领导班子群众路线对照检查材料
2014/10/26 职场文书
部门优秀员工推荐信
2015/03/24 职场文书
Apache Hudi集成Spark SQL操作hide表
2022/03/31 Servers
Python利用FlashText算法实现替换字符串
2022/03/31 Python