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 相关文章推荐
js 判断浏览器类型 去全角、半角空格 自动关闭当前窗口
Apr 10 Javascript
js onkeypress与onkeydown 事件区别详细说明
Dec 13 Javascript
C#中使用迭代器处理等待任务
Jul 13 Javascript
深入浅析JavaScript字符串操作方法 slice、substr、substring及其IE兼容性
Dec 16 Javascript
微信小程序多列选择器range-key使用详解
Mar 30 Javascript
浅谈Vue.js应用的四种AJAX请求数据模式
Aug 30 Javascript
浅谈函数调用的不同方式,以及this的指向
Sep 17 Javascript
js表单序列化判断空值的实例
Sep 22 Javascript
Bootstrap Table 搜索框和查询功能
Nov 30 Javascript
Layui 带多选框表格监听事件以及按钮自动点击写法实例
Sep 02 Javascript
原生jQuery实现只显示年份下拉框
Dec 24 jQuery
基于JavaScript实现轮播图效果
Jan 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中文验证码实现示例分享
2014/01/12 PHP
qq登录,新浪微博登录接口申请过程中遇到的问题
2014/07/22 PHP
php读取csv文件并输出的方法
2015/03/14 PHP
php使用COPY函数更新配置文件的方法
2015/06/18 PHP
PHP将URL转换成短网址的算法分享
2016/09/13 PHP
基于jQuery的弹出警告对话框美化插件(警告,确认和提示)
2010/06/10 Javascript
Jqgrid设置全选(选择)及获取选择行的值示例代码
2013/12/28 Javascript
用JS中split方法实现彩色文字背景效果实例
2016/08/24 Javascript
纯JS实现弹性导航条效果
2017/03/06 Javascript
js实现简单数字变动效果
2017/11/06 Javascript
JQuery常用简单动画操作方法回顾与总结
2019/12/07 jQuery
Python3利用Dlib19.7实现摄像头人脸识别的方法
2018/05/11 Python
Python中的Django基本命令实例详解
2018/07/15 Python
python版本五子棋的实现代码
2018/12/11 Python
jenkins配置python脚本定时任务过程图解
2019/10/29 Python
将数据集制作成VOC数据集格式的实例
2020/02/17 Python
python解释器pycharm安装及环境变量配置教程图文详解
2020/02/26 Python
Python递归实现打印多重列表代码
2020/02/27 Python
在pycharm中使用pipenv创建虚拟环境和安装django的详细教程
2020/11/30 Python
class类在python中获取金融数据的实例方法
2020/12/10 Python
Python基于mediainfo批量重命名图片文件
2020/12/29 Python
解决selenium+Headless Chrome实现不弹出浏览器自动化登录的问题
2021/01/09 Python
CSS3关于z-index不生效问题的解决
2020/02/19 HTML / CSS
欧洲最大的美妆零售网站:Feelunique
2017/01/14 全球购物
Dr.Jart+美国官网:韩国药妆品牌
2019/01/18 全球购物
网友共享的几个面试题关于Java和Unix等方面的
2016/09/08 面试题
财务人员求职自荐书范文
2014/02/10 职场文书
党员学习党的群众路线思想汇报(5篇)
2014/09/10 职场文书
2015年资料员工作总结
2015/04/25 职场文书
发言稿之优秀教师篇
2019/09/26 职场文书
导游词之日月潭
2019/11/05 职场文书
Python中使用Lambda函数的5种用法
2021/04/01 Python
MySQL三种方式实现递归查询
2022/04/18 MySQL
Java线程的6种状态与生命周期
2022/05/11 Java/Android
使用Django框架创建项目
2022/06/10 Python