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 相关文章推荐
Jquery Validation插件防止重复提交表单的解决方法
Mar 05 Javascript
JS中Iframe之间传值的方法
Mar 11 Javascript
总结jQuery插件开发中的一些要点
May 16 Javascript
Vue响应式添加、修改数组和对象的值
Mar 20 Javascript
微信小程序-横向滑动scroll-view隐藏滚动条
Apr 20 Javascript
详解Node.js 命令行程序开发教程
Jun 07 Javascript
Angular CLI在Angular项目中如何使用scss详解
Apr 10 Javascript
JQuery特殊效果和链式调用操作示例
May 13 jQuery
浅谈layui 绑定form submit提交表单的注意事项
Oct 25 Javascript
vue实现购物车的监听
Apr 20 Javascript
Vue 打包体积优化方案小结
May 20 Javascript
vue配置型表格基于el-table拓展之table-plus组件
Apr 12 Vue.js
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中使用gettext来支持多语言的方法
2011/05/02 PHP
PHP的5个安全措施小结
2012/07/17 PHP
php+mysqli批量查询多张表数据的方法
2015/01/29 PHP
Yii2单元测试用法示例
2016/11/12 PHP
基于php数组中的索引数组和关联数组详解
2018/03/12 PHP
js解析与序列化json数据(一)json.stringify()的基本用法
2013/02/01 Javascript
NodeJs中的VM模块详解
2015/05/06 NodeJs
jQuery siblings()用法实例详解
2016/04/26 Javascript
javascript js 操作数组 增删改查的简单实现
2016/06/20 Javascript
解决bootstrap导航栏navbar在IE8上存在缺陷的方法
2016/07/01 Javascript
javascript实现滚动效果的数字时钟实例
2016/07/21 Javascript
一个非常好用的文字滚动的案例,鼠标悬浮可暂停[两种方案任选]
2016/12/01 Javascript
vue.js指令v-model实现方法
2016/12/05 Javascript
js实现登录框鼠标拖拽效果
2017/03/09 Javascript
angularJS 发起$http.post和$http.get请求的实现方法
2017/05/18 Javascript
JS实现马赛克图片效果完整示例
2019/04/13 Javascript
[01:00:35]2018DOTA2亚洲邀请赛3月30日B组 EffcetVSMineski
2018/03/31 DOTA
django实现前后台交互实例
2017/08/07 Python
Pycharm远程调试openstack的方法
2017/11/21 Python
Django使用详解:ORM 的反向查找(related_name)
2018/05/30 Python
Python求两个圆的交点坐标或三个圆的交点坐标方法
2018/11/07 Python
python:按行读入,排序然后输出的方法
2019/07/20 Python
python 标准差计算的实现(std)
2019/07/29 Python
Python 根据日志级别打印不同颜色的日志的方法示例
2019/08/08 Python
python二进制读写及特殊码同步实现详解
2019/10/11 Python
使用Keras实现简单线性回归模型操作
2020/06/12 Python
Interflora澳大利亚:同日鲜花速递
2019/06/25 全球购物
营销与策划专业毕业生求职信
2013/11/01 职场文书
2014院党委领导班子及其成员群众路线对照检查材料思想汇报
2014/10/04 职场文书
自主招生专家推荐信
2015/03/26 职场文书
教师节晚会主持词
2015/06/30 职场文书
新教师2015年度工作总结
2015/07/22 职场文书
信息技术研修心得体会
2016/01/08 职场文书
八年级历史教学反思
2016/02/19 职场文书
python 如何做一个识别率百分百的OCR
2021/05/29 Python
解决Mysql报错 Table 'mysql.user' doesn't exist
2022/05/06 MySQL