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对象和属性的创建方法
Jan 15 Javascript
Javascript异步表单提交,图片上传,兼容异步模拟ajax技术
May 10 Javascript
jQuery实现的一个自定义Placeholder属性插件
Aug 11 Javascript
js获取form的方法
May 06 Javascript
JavaScript实现基于十进制的四舍五入实例
Jul 17 Javascript
ES6下React组件的写法示例代码
May 04 Javascript
jquery实现简单实用的轮播器
May 23 jQuery
JS设计模式之单例模式(一)
Sep 29 Javascript
js实现点击按钮复制文本功能
Jul 20 Javascript
基于webpack4.X从零搭建React脚手架的方法步骤
Dec 23 Javascript
微信小程序利用Canvas绘制图片和竖排文字详解
Jun 25 Javascript
小程序实现列表倒计时功能
Jan 29 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
我的论坛源代码(二)
2006/10/09 PHP
Window下PHP三种运行方式图文详解
2013/06/11 PHP
使用PHP和JavaScript判断请求是否来自微信内浏览器
2015/08/18 PHP
PHP实现添加购物车功能
2017/03/06 PHP
Yii2.0多文件上传实例说明
2017/07/24 PHP
ajax不执行success回调而是执行了error回调
2012/12/10 Javascript
jQuery提交多个表单的小技巧
2014/07/27 Javascript
通用javascript代码判断版本号是否在版本范围之间
2015/11/29 Javascript
Node.js用readline模块实现输入输出
2016/12/16 Javascript
Angular 输入框实现自定义验证功能
2017/02/19 Javascript
Nodejs 复制文件/文件夹的方法
2017/08/24 NodeJs
Angular浏览器插件Batarang介绍及使用
2018/02/07 Javascript
基于vue实现web端超大数据量表格的卡顿解决
2019/04/02 Javascript
express启用https使用小记
2019/05/21 Javascript
微信小程序swiper禁止用户手动滑动代码实例
2019/08/23 Javascript
Electron+vue从零开始打造一个本地播放器的方法示例
2020/10/27 Javascript
[02:43]DOTA2英雄基础教程 圣堂刺客
2013/12/09 DOTA
[00:52]DOTA2国际邀请赛
2020/02/21 DOTA
Python中的localtime()方法使用详解
2015/05/22 Python
Python实现定时备份mysql数据库并把备份数据库邮件发送
2018/03/08 Python
python模拟表单提交登录图书馆
2018/04/27 Python
python循环输出三角形图案的例子
2019/11/22 Python
Python 实现Image和Ndarray互相转换
2020/02/19 Python
HTML5 video循环播放多个视频的方法步骤
2020/08/06 HTML / CSS
Schutz鞋官方网站:Schutz Shoes
2017/12/13 全球购物
学生个人的自我评价分享
2013/11/05 职场文书
售后主管岗位职责
2013/12/08 职场文书
工地门卫岗位职责
2013/12/30 职场文书
社区志愿者心得体会
2014/01/03 职场文书
餐厅经理岗位职责范本
2014/02/17 职场文书
幼儿园亲子活动总结
2014/04/26 职场文书
合作意向书
2014/07/30 职场文书
党员“四风”方面存在问题及整改措施
2014/09/24 职场文书
政协会议宣传标语
2014/10/09 职场文书
2015年共青团工作总结
2015/05/15 职场文书
Python字符串对齐方法使用(ljust()、rjust()和center())
2021/04/26 Python