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 字符串与数组转换函数[不用split与join]
Dec 13 Javascript
一个简单的js动画效果代码
Jul 20 Javascript
javascript Deferred和递归次数限制实例
Oct 21 Javascript
js实现对ajax请求面向对象的封装
Jan 08 Javascript
浅谈JSON.stringify()和JOSN.parse()方法的不同
Aug 29 Javascript
jQuery 插件实现随机自由弹跳气泡样式
Jan 12 Javascript
js自定义弹框插件的封装
Aug 24 Javascript
javascript input输入框模糊提示功能的实现
Sep 25 Javascript
Moment.js实现多个同时倒计时
Aug 26 Javascript
layui实现把数据表格时间戳转换为时间格式的例子
Sep 12 Javascript
Bootstrap table 实现树形表格联动选中联动取消功能
Sep 30 Javascript
解决VUE-Router 同一页面第二次进入不刷新的问题
Jul 22 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
收音机玩机评测 406 篇视频合集
2020/03/11 无线电
PHP开发需要注意的安全问题
2010/09/01 PHP
在CentOS系统上从零开始搭建WordPress博客的全流程记录
2016/04/21 PHP
json 定义
2008/06/10 Javascript
jQuery autocomplete插件修改
2009/04/17 Javascript
javascript 面向对象的JavaScript类
2010/05/04 Javascript
jquery模拟按下回车实现代码
2011/09/20 Javascript
jquery ajax请求实例深入解析
2012/11/26 Javascript
jquery清空textarea等输入框实现代码
2013/04/22 Javascript
新增加的内容是如何将div的scrollbar自动移动最下面
2014/01/02 Javascript
jquery.post用法关于type设置问题补充
2014/01/03 Javascript
搭建pomelo 开发环境
2014/06/24 Javascript
js从Cookies里面取值的简单实现
2014/06/30 Javascript
javascript实现左右控制无缝滚动
2014/12/31 Javascript
js实现div拖动动画运行轨迹效果代码分享
2015/08/27 Javascript
js实现音频控制进度条功能
2017/04/01 Javascript
NodeJS实现同步的方法
2019/03/02 NodeJs
Vue使用NProgress的操作过程解析
2019/10/10 Javascript
[02:33]2018 DOTA2亚洲邀请赛回顾视频 再次拾起那些美妙的时刻
2018/04/10 DOTA
bat和python批量重命名文件的实现代码
2016/05/19 Python
利用CSS的Sass预处理器(框架)来制作居中效果
2016/03/10 HTML / CSS
详解H5本地储存Web Storage
2017/07/03 HTML / CSS
【HTML5】Canvas绘制简单图片教程
2016/05/13 HTML / CSS
大学生就业自我鉴定
2013/10/26 职场文书
会计电算化专业毕业生求职信范文
2013/12/10 职场文书
海飞丝的广告词
2014/03/20 职场文书
大学理论知识学习自我鉴定
2014/04/28 职场文书
小班上学期评语
2014/05/05 职场文书
课外活动总结范文
2014/07/09 职场文书
爱祖国爱家乡演讲稿
2014/09/02 职场文书
党员个人总结范文
2015/02/14 职场文书
2015年设计师个人工作总结
2015/04/25 职场文书
土木工程生产实习心得体会
2016/01/22 职场文书
MySQL分库分表与分区的入门指南
2021/04/22 MySQL
浅谈Redis位图(Bitmap)及Redis二进制中的问题
2021/07/15 Redis
一篇文章带你深入了解Mysql触发器
2021/08/02 MySQL