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中使用inline函数的问题
Mar 08 Javascript
jQuery 插件 将this下的div轮番显示
Apr 09 Javascript
Prototype Array对象 学习
Jul 19 Javascript
JavaScript的单例模式 (singleton in Javascript)
Jun 11 Javascript
js对象关系图 方便dom操作
Mar 18 Javascript
js倒计时小程序
Nov 05 Javascript
基于JS实现Android,iOS一个手势动画效果
Apr 27 Javascript
JavaScript学习总结之正则的元字符和一些简单的应用
Jun 30 Javascript
利用jQuery实现简单的拖曳效果实例代码
Oct 20 jQuery
使用Vue如何写一个双向数据绑定(面试常见)
Apr 20 Javascript
JavaScript选择排序算法原理与实现方法示例
Aug 06 Javascript
JS中appendChild追加子节点无效的解决方法
Oct 14 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 中dirname(_file_)讲解
2007/03/18 PHP
php 面试碰到过的问题 在此做下记录
2011/06/09 PHP
jquerymobile checkbox及时刷新才能获取其准确值
2012/04/14 Javascript
使用jQuery和PHP实现类似360功能开关效果
2014/02/12 Javascript
JS中判断JSON数据是否存在某字段的方法
2014/03/07 Javascript
TypeError document.getElementById(...) is null错误原因
2015/05/18 Javascript
学习Angular中作用域需要注意的坑
2016/08/17 Javascript
Bootstrap基本样式学习笔记之表格(2)
2016/12/07 Javascript
浅谈Vue父子组件和非父子组件传值问题
2017/08/22 Javascript
Angularjs实现多图片上传预览功能
2018/07/18 Javascript
vue项目使用微信公众号支付总结及遇到的坑
2018/10/23 Javascript
微信小程序实现侧边栏分类
2019/10/21 Javascript
es6函数之尾调用优化实例分析
2020/04/25 Javascript
python 字典(dict)遍历的四种方法性能测试报告
2014/06/25 Python
python将list转为matrix的方法
2018/12/12 Python
python 项目目录结构设置
2020/02/14 Python
Python读入mnist二进制图像文件并显示实例
2020/04/24 Python
Python中的__init__作用是什么
2020/06/09 Python
详解Java中一维、二维数组在内存中的结构
2021/02/11 Python
使用 CSS3 中@media 实现网页自适应的示例代码
2020/03/24 HTML / CSS
kmart凯马特官网:美国最大的打折零售商和全球最大的批发商之一
2016/11/17 全球购物
学期研究性学习个人的自我评价
2014/01/09 职场文书
项目合作意向书范本
2014/04/01 职场文书
阅兵口号
2014/06/19 职场文书
小学生勤俭节约演讲稿
2014/08/28 职场文书
2014县政府领导班子三严三实对照检查材料思想汇报
2014/09/26 职场文书
优秀工作者事迹材料
2014/12/26 职场文书
学术研讨会欢迎词
2015/01/26 职场文书
大学生求职自荐信
2015/03/24 职场文书
教师听课学习心得体会
2016/01/15 职场文书
祝福语集锦:朋友新店开业祝福语
2019/12/10 职场文书
端午节将至,用Python爬取粽子数据并可视化,看看网友喜欢哪种粽子吧!
2021/06/11 Python
如何利用 CSS Overview 面板重构优化你的网站
2021/10/24 HTML / CSS
一条慢SQL语句引发的改造之路
2022/03/16 MySQL
vue自定义右键菜单之全局实现
2022/04/09 Vue.js
MySQL中LAG()函数和LEAD()函数的使用
2022/08/14 MySQL