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下操作css的float属性的特殊写法
Aug 22 Javascript
javascript contains和compareDocumentPosition 方法来确定是否HTML节点间的关系
Feb 04 Javascript
jQuery 1.7.2中getAll方法的疑惑分析
May 23 Javascript
JS在IE下缺少标识符的错误
Jul 23 Javascript
JavaScript返回网页中超链接数量的方法
Apr 03 Javascript
jQuery数据类型小结(14个)
Jan 08 Javascript
Jquery中map函数的用法
Jun 03 Javascript
JavaScript的instanceof运算符学习教程
Jun 08 Javascript
AngularJS中isolate scope的用法分析
Nov 22 Javascript
微信小程序使用wxParse解析html的实现示例
Aug 30 Javascript
vue动态路由:路由参数改变,视图不更新问题的解决
Nov 05 Javascript
vue项目在webpack2实现移动端字体自适配功能
Jun 02 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的面试题集
2006/11/19 PHP
php笔记之:数据类型与常量的使用分析
2013/05/14 PHP
浅析php数据类型转换
2014/01/09 PHP
php基于curl扩展制作跨平台的restfule 接口
2015/05/11 PHP
学习php设计模式 php实现抽象工厂模式
2015/12/07 PHP
PHP记录页面停留时间的方法
2016/03/30 PHP
phpstorm 配置xdebug的示例代码
2019/03/31 PHP
Laravel 微信小程序后端搭建步骤详解
2019/11/26 PHP
基于PHP的微信公众号的开发流程详解
2020/08/07 PHP
safari,opera嵌入iframe页面cookie读取问题解决方法
2010/06/23 Javascript
基于jQuery实现点击同时更改两个iframe的网址
2010/07/01 Javascript
jQuery 版元素拖拽原型代码
2011/04/25 Javascript
体验js中splice()的强大(插入、删除或替换数组的元素)
2013/01/16 Javascript
JQuery文字列表向上滚动的代码
2013/11/13 Javascript
jQuery插件制作之参数用法实例分析
2015/06/01 Javascript
详解Wondows下Node.js使用MongoDB的环境配置
2016/03/01 Javascript
Bootstrap组件系列之福利篇几款好用的组件(推荐)
2016/06/23 Javascript
解决vue select当前value没有更新到vue对象属性的问题
2018/08/30 Javascript
JS实现动态星空背景效果
2019/11/01 Javascript
[01:01:18]VP vs NIP 2019国际邀请赛小组赛 BO2 第二场 8.15
2019/08/17 DOTA
[52:03]DOTA2-DPC中国联赛 正赛 Ehome vs iG BO3 第三场 1月31日
2021/03/11 DOTA
Python读取Excel的方法实例分析
2015/07/11 Python
python中实现精确的浮点数运算详解
2017/11/02 Python
Python的地形三维可视化Matplotlib和gdal使用实例
2017/12/09 Python
python 类对象和实例对象动态添加方法(分享)
2017/12/31 Python
python3中的md5加密实例
2018/05/29 Python
Python面向对象之类的定义与继承用法示例
2019/01/14 Python
python中aioysql(异步操作MySQL)的方法
2019/04/11 Python
安装Pycharm2019以及配置anconda教程的方法步骤
2019/11/11 Python
python 如何把docker-compose.yaml导入到数据库相关条目里
2021/01/15 Python
Osklen官方在线商店:巴西服装品牌
2019/04/25 全球购物
物流仓管员工作职责
2014/01/06 职场文书
积极向上的团队口号
2014/06/06 职场文书
禁毒宣传活动总结
2014/08/26 职场文书
小学生一年级(书信作文)
2019/08/13 职场文书
SQL Server中T-SQL标识符介绍与无排序生成序号的方法
2022/05/25 SQL Server