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匿名函数
Nov 25 Javascript
Juqery Html(),append()等方法的Bug解决方法
Dec 13 Javascript
js控制表单不能输入空格的小例子
Nov 20 Javascript
JavaScript 开发工具webstrom使用指南
Dec 09 Javascript
JavaScript的React Web库的理念剖析及基础上手指南
May 10 Javascript
jQuery简单实现点击文本框复制内容到剪贴板上的方法
Aug 01 Javascript
jQuery动态添加与删除tr行实例代码
Oct 18 Javascript
jQuery特殊符号转义的实现
Nov 30 Javascript
微信小程序template模板实例详解
Oct 27 Javascript
Vue 按键修饰符处理事件的方法
May 04 Javascript
vue el-tree 默认展开第一个节点的实现代码
May 15 Javascript
如何利用 JS 脚本实现网页全自动秒杀抢购功能
Oct 12 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 file_get_contents函数轻松采集html数据
2010/04/22 PHP
PHP写的求多项式导数的函数代码
2012/07/04 PHP
Discuz!X中SESSION机制实例详解
2015/09/23 PHP
Symfony2 session用法实例分析
2016/02/04 PHP
Netbeans 8.2将支持PHP7 更精彩
2016/06/13 PHP
PHP自定义错误处理的方法分析
2018/12/19 PHP
javascript学习笔记(七)利用javascript来创建和存储cookie
2011/04/08 Javascript
js弹出层之1:JQuery.Boxy (二)
2011/10/06 Javascript
浅析基于WEB前端页面的页面内容搜索的实现思路
2014/06/10 Javascript
JS生成不重复随机数组的函数代码
2014/06/10 Javascript
JQuery插件Quicksand实现超炫的动画洗牌效果
2015/05/03 Javascript
javascript基本语法
2016/05/31 Javascript
jQuery实现的兼容性浮动层示例
2016/08/02 Javascript
jQuery实现一个简单的轮播图
2017/02/19 Javascript
chorme 浏览器记住密码后input黄色背景处理方法(两种)
2017/11/22 Javascript
你可能不知道的CORS跨域资源共享
2019/03/13 Javascript
vue使用混入定义全局变量、函数、筛选器的实例代码
2019/07/29 Javascript
vue 中固定导航栏的实例代码
2019/11/01 Javascript
详解Python的Lambda函数与排序
2016/10/25 Python
python实现PDF中表格转化为Excel的方法
2020/06/16 Python
使用CSS媒体查询(Media Queries)和JavaScript判断浏览器设备类型的方法
2014/04/03 HTML / CSS
CSS实现限制字数功能当对象内文本溢出时显示省略标记
2014/08/20 HTML / CSS
如何清空Session
2015/02/23 面试题
出纳岗位职责模板
2013/11/27 职场文书
网吧消防安全制度
2014/01/28 职场文书
工地门卫岗位职责范本
2014/07/01 职场文书
家庭困难证明
2014/10/12 职场文书
社区四风存在问题及整改措施
2014/10/26 职场文书
2015元旦晚会主持词(开场白+结束语)
2014/12/14 职场文书
我在伊朗长大观后感
2015/06/16 职场文书
2015年清剿火患专项行动工作总结
2015/07/27 职场文书
《最后一头战象》教学反思
2016/02/16 职场文书
公司开业的祝贺语大全(60条)
2019/07/05 职场文书
TV动画《间谍过家家》公开PV
2022/03/20 日漫
SpringBoot详解自定义Stater的应用
2022/07/15 Java/Android
Spring Boot 的创建和运行示例代码详解
2022/07/23 Java/Android