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 相关文章推荐
基于JavaScript自定义构造函数的详解说明
Apr 24 Javascript
Javascript页面添加到收藏夹的简单方法
Aug 07 Javascript
JavaScript+Java实现HTML页面转为PDF文件保存的方法
May 30 Javascript
使用JS实现图片展示瀑布流效果的实例代码
Sep 12 Javascript
JS实现页面跳转参数不丢失的方法
Nov 28 Javascript
详解网站中图片日常使用以及优化手法
Jan 09 Javascript
JS常见算法详解
Feb 28 Javascript
基于jQuery ztree实现表格风格的树状结构
Aug 31 jQuery
vue 组件开发原理与实现方法详解
Nov 29 Javascript
js实现经典贪吃蛇小游戏
Mar 19 Javascript
关于AngularJS中几种Providers的区别总结
May 17 Javascript
Vue中使用JsonView来展示Json树的实例代码
Nov 16 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 preg_match_all结合str_replace替换内容中所有img
2008/10/11 PHP
php GeoIP的使用教程
2011/03/09 PHP
php将字符串全部转换成大写或者小写的方法
2015/03/17 PHP
thinkPHP模板中函数的使用方法示例
2016/11/30 PHP
Thinkphp3.2实用篇之计算型验证码示例
2017/02/09 PHP
Javascript调试工具(下载)
2007/01/09 Javascript
js电信网通双线自动选择技巧
2008/11/18 Javascript
jquery向上向下取整适合分页查询
2014/09/06 Javascript
JavaScript中length属性的使用方法
2015/06/05 Javascript
jQueryUI DatePicker 添加时分秒
2016/06/04 Javascript
bootstrap 表单验证使用方法
2017/01/11 Javascript
WebSocket的通信过程与实现方法详解
2018/04/29 Javascript
webpack@v4升级踩坑(小结)
2018/10/08 Javascript
JS多个异步请求 按顺序执行next实现解析
2019/09/16 Javascript
vue-socket.io接收不到数据问题的解决方法
2020/05/13 Javascript
原生js实现滑块区间组件
2021/01/20 Javascript
python通过imaplib模块读取gmail里邮件的方法
2015/05/08 Python
Python3中类、模块、错误与异常、文件的简易教程
2017/11/20 Python
python在TXT文件中按照某一字符串取出该字符串所在的行方法
2018/12/10 Python
win8.1安装Python 2.7版环境图文详解
2019/07/01 Python
pyqt5数据库使用详细教程(打包解决方案)
2020/03/25 Python
tensorflow/core/platform/cpu_feature_guard.cc:140] Your CPU supports instructions that this T
2020/06/22 Python
日本无添加化妆品:HABA
2016/08/18 全球购物
美国孕妇装品牌:Destination Maternity
2018/02/04 全球购物
Eton丹麦官网:精美的男式衬衫
2020/05/27 全球购物
银行实习鉴定
2013/12/13 职场文书
外贸专业求职信
2014/03/09 职场文书
优秀的2014年两会精神解读
2014/03/17 职场文书
无刑事犯罪记录证明范本
2014/09/29 职场文书
公安领导班子四风问题个人整改措施思想汇报
2014/10/09 职场文书
2015年村计划生育工作总结
2015/04/28 职场文书
幼儿园教师安全责任书
2015/05/08 职场文书
党小组意见范文
2015/06/08 职场文书
2016全国“质量月”活动标语口号
2015/12/26 职场文书
暑假开始了,你的暑假学习计划写好了吗?
2019/07/04 职场文书
nginx lua 操作 mysql
2022/05/15 Servers