vue2 mint-ui loadmore实现下拉刷新,上拉更多功能


Posted in Javascript onMarch 21, 2018

mintui是饿了么团队针对vue开发的移动端组件库,方便实现移动端的一些功能,这里主要给大家介绍vue2 mint-ui loadmore实现下拉刷新,上拉更多功能,具体代码如下所示:

<template>
 <div class="page-loadmore">
  <h1 class="page-title">Pull up</h1>
  <p class="page-loadmore-desc">在列表底部, 按住 - 上拉 - 释放可以获取更多数据</p>
  <p class="page-loadmore-desc">translate : {{ translate }}</p>
  <div class="loading-background" :style="{ transform: 'scale3d(' + moveTranslate + ',' + moveTranslate + ',1)' }">
   translateScale : {{ moveTranslate }}
  </div>
  <div class="page-loadmore-wrapper" ref="wrapper" :style="{ height: wrapperHeight + 'px' }">
   <mt-loadmore :top-method="loadTop" @translate-change="translateChange" @top-status-change="handleTopChange"    :bottom-method="loadBottom" @bottom-status-change="handleBottomChange" :bottom-all-loaded="allLoaded" ref="loadmore">
    <ul class="page-loadmore-list">
     <li v-for="item in list" class="page-loadmore-listitem">{{ item }}</li>
    </ul>
    <div slot="top" class="mint-loadmore-top">
     <span v-show="topStatus !== 'loading'" :class="{ 'is-rotate': topStatus === 'drop' }">↓</span>
     <span v-show="topStatus === 'loading'">
      <mt-spinner type="snake"></mt-spinner>
     </span>
    </div>
    <div slot="bottom" class="mint-loadmore-bottom">
     <span v-show="bottomStatus !== 'loading'" :class="{ 'is-rotate': bottomStatus === 'drop' }">↑</span>
     <span v-show="bottomStatus === 'loading'">
      <mt-spinner type="snake"></mt-spinner>
     </span>
    </div>
   </mt-loadmore>
  </div>
 </div>
</template>
<style>
 .loading-background, .mint-loadmore-top span {
  -webkit-transition: .2s linear;
  transition: .2s linear
 }
 .mint-loadmore-top span {
  display: inline-block;
  vertical-align: middle
 }
 .mint-loadmore-top span.is-rotate {
  -webkit-transform: rotate(180deg);
  transform: rotate(180deg)
 }
 .page-loadmore .mint-spinner {
  display: inline-block;
  vertical-align: middle
 }
 .page-loadmore-desc {
  text-align: center;
  color: #666;
  padding-bottom: 5px
 }
 .page-loadmore-desc:last-of-type,
 .page-loadmore-listitem {
  border-bottom: 1px solid #eee
 }
 .page-loadmore-listitem {
  height: 50px;
  line-height: 50px;
  text-align: center
 }
 .page-loadmore-listitem:first-child {
  border-top: 1px solid #eee
 }
 .page-loadmore-wrapper {
  overflow: scroll
 }
 .mint-loadmore-bottom span {
  display: inline-block;
  -webkit-transition: .2s linear;
  transition: .2s linear;
  vertical-align: middle
 }
 .mint-loadmore-bottom span.is-rotate {
  -webkit-transform: rotate(180deg);
  transform: rotate(180deg)
 }
</style>
<script type="text/babel">
 export default {
  data() {
   return {
    list: [],
    allLoaded: false,
    bottomStatus: '',
    wrapperHeight: 0,
    topStatus: '',
    //wrapperHeight: 0,
    translate: 0,
    moveTranslate: 0
   };
  },
  methods: {
   handleBottomChange(status) {
    this.bottomStatus = status;
   },
   loadBottom() {
    setTimeout(() => {
     let lastValue = this.list[this.list.length - 1];
     if (lastValue < 40) {
      for (let i = 1; i <= 10; i++) {
       this.list.push(lastValue + i);
      }
     } else {
      this.allLoaded = true;
     }
     this.$refs.loadmore.onBottomLoaded();
    }, 1500);
   },
   handleTopChange(status) {
    this.moveTranslate = 1;
    this.topStatus = status;
   },
   translateChange(translate) {
    const translateNum = +translate;
    this.translate = translateNum.toFixed(2);
    this.moveTranslate = (1 + translateNum / 70).toFixed(2);
   },
   loadTop() {
    setTimeout(() => {
     let firstValue = this.list[0];
     for (let i = 1; i <= 10; i++) {
      this.list.unshift(firstValue - i);
     }
     this.$refs.loadmore.onTopLoaded();
    }, 1500);
   },
  },
  created() {
   for (let i = 1; i <= 20; i++) {
    this.list.push(i);
   }
  },
  mounted() {
   this.wrapperHeight = document.documentElement.clientHeight - this.$refs.wrapper.getBoundingClientRect().top;
  }
 };
</script>

总结

以上所述是小编给大家介绍的vue2 mint-ui loadmore实现下拉刷新,上拉更多功能,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

Javascript 相关文章推荐
javascript不同页面传值的改进版
Sep 30 Javascript
js身份证验证超强脚本
Oct 26 Javascript
判断文档离浏览器顶部的距离的方法
Jan 08 Javascript
node.js中watch机制详解
Nov 17 Javascript
使用svg实现动态时钟效果
Jul 17 Javascript
angular4中*ngFor不能对返回来的对象进行循环的解决方法
Sep 12 Javascript
vue权限问题的完美解决方案
May 08 Javascript
JS实现求字符串中出现最多次数的字符和次数示例
Jul 05 Javascript
微信小程序渲染性能调优小结
Jul 30 Javascript
微信小程序实现左侧滑栏过程解析
Aug 26 Javascript
Node.js实现简单管理系统
Sep 23 Javascript
基于Vue CSR的微前端实现方案实践
May 27 Javascript
javascript与PHP动态往类中添加方法对比
Mar 21 #Javascript
详解PHP后期静态绑定分析与应用
Mar 21 #Javascript
在 Linux/Unix 中不重启 Vim 而重新加载 .vimrc 文件的流程
Mar 21 #Javascript
用p5.js制作烟花特效的示例代码
Mar 21 #Javascript
AngularJS监听ng-repeat渲染完成的方法
Mar 20 #Javascript
vue对storejs获取的数据进行处理时遇到的几种问题小结
Mar 20 #Javascript
webpack本地开发环境无法用IP访问的解决方法
Mar 20 #Javascript
You might like
MacOS 安装 PHP的图片裁剪扩展Tclip
2015/03/25 PHP
Laravel5.4框架使用socialite实现github登录的方法
2019/03/20 PHP
php源码的安装方法和实例
2019/09/26 PHP
PHP pthreads v3下worker和pool的使用方法示例
2020/02/21 PHP
JqGrid web打印实现代码
2011/05/31 Javascript
jsp js鼠标移动到指定区域显示选项卡离开时隐藏示例
2013/06/14 Javascript
JS实现简单的Canvas画图实例
2013/07/04 Javascript
jquery模拟进度条实现方法
2015/08/03 Javascript
jquery动画效果学习笔记(8种效果)
2015/11/13 Javascript
jQuery simpleModal插件的使用介绍
2016/08/30 Javascript
KnockoutJS 3.X API 第四章之数据控制流foreach绑定
2016/10/10 Javascript
JavaScript  event对象整理及详细介绍
2016/10/10 Javascript
详解JS中遍历语法的比较
2017/04/07 Javascript
js获取浏览器的各种属性
2017/04/27 Javascript
React Native 集成jpush-react-native的示例代码
2017/08/16 Javascript
如何在vue里面优雅的解决跨域(路由冲突问题)
2019/01/20 Javascript
详解VUE前端按钮权限控制
2019/04/26 Javascript
vux-scroller实现移动端上拉加载功能过程解析
2019/10/08 Javascript
[29:23]2014 DOTA2国际邀请赛中国区预选赛 LGD-GAMING VS CIS 第一场1
2014/05/23 DOTA
无畏的旅行:Intrepid Travel
2017/12/20 全球购物
英国办公家具网站:Furniture At Work
2019/10/07 全球购物
AJAX检测用户名是否存在的方法
2021/03/24 Javascript
获奖的大学生创业计划书
2014/01/05 职场文书
光盘行动倡议书
2014/02/02 职场文书
《童年的发现》教学反思
2014/02/14 职场文书
《故乡》教学反思
2014/04/10 职场文书
吨的认识教学反思
2014/04/27 职场文书
2015年物业管理工作总结
2015/04/23 职场文书
2016年小学生新年寄语
2015/08/18 职场文书
合同补充协议书
2016/03/24 职场文书
2019优秀干部竞聘演讲稿范文!
2019/07/02 职场文书
创业计划书之婴幼儿游泳馆
2019/09/11 职场文书
JavaWeb 入门:Hello Servlet
2021/07/16 Java/Android
Redis的字符串是如何实现的
2021/10/24 Redis
springboot + mongodb 通过经纬度坐标匹配平面区域的方法
2021/11/01 MongoDB
人民币符号
2022/02/17 杂记