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 相关文章推荐
一个页面放2段图片滚动代码出现冲突的问题如何解决
Dec 21 Javascript
js面向对象的写法
Feb 19 Javascript
javascript函数自动执行常用方法汇总
Mar 28 Javascript
基于jQuery实现歌词滚动版音乐播放器的代码
Sep 17 Javascript
js CSS3实现卡牌旋转切换效果
Jul 04 Javascript
手把手教你搭建ES6的开发运行环境
Jul 11 Javascript
p5.js入门教程之小球动画示例代码
Mar 15 Javascript
Bootstrap 实现表格样式、表单布局的实例代码
Dec 09 Javascript
微信小程序实现人脸识别登陆的示例代码
Apr 02 Javascript
使用vscode快速建立vue模板过程详解
Oct 10 Javascript
使用Vue-scroller页面input框不能触发滑动的问题及解决方法
Aug 08 Javascript
.netcore+vue 实现压缩文件下载功能
Sep 24 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
可以在线执行PHP代码包装修正版
2008/03/15 PHP
php-accelerator网站加速PHP缓冲的方法
2008/07/30 PHP
浅析PHP Socket技术
2013/08/02 PHP
php cookie名使用点号(句号)会被转换
2014/10/23 PHP
浅谈PHP发送HTTP请求的几种方式
2017/07/25 PHP
PHP实现统计所有字符在字符串中出现次数的方法
2017/10/17 PHP
jQuery入门第一课 jQuery选择符
2010/03/14 Javascript
jquery获取input的value问题说明
2010/08/19 Javascript
jquery代码实现简单的随机图片瀑布流效果
2015/04/20 Javascript
详解JavaScript中jQuery和Ajax以及JSONP的联合使用
2015/08/13 Javascript
关于事件mouseover ,mouseout ,mouseenter,mouseleave的区别
2015/10/12 Javascript
基于JavaScript实现图片点击弹出窗口而不是保存
2016/02/06 Javascript
AngularJS入门教程之XHR和依赖注入详解
2016/08/18 Javascript
canvas的神奇用法
2017/02/03 Javascript
原生javascript移动端滑动banner效果
2017/03/10 Javascript
详解Vue 非父子组件通信方法(非Vuex)
2017/05/24 Javascript
详解用vue.js和laravel实现微信授权登陆
2017/06/23 Javascript
微信小程序loading组件显示载入动画用法示例【附源码下载】
2017/12/09 Javascript
vue awesome swiper异步加载数据出现的bug问题
2018/07/03 Javascript
Vue.js 实现数据展示全部和收起功能
2018/09/05 Javascript
Vue多组件仓库开发与发布详解
2019/02/28 Javascript
微信小程序 setData 对 data数据影响问题
2019/04/18 Javascript
js实现的订阅发布者模式简单示例
2020/03/14 Javascript
微信小程序onShareTimeline()实现分享朋友圈
2021/01/07 Javascript
[01:34]DAC2018主赛事第四日五佳镜头 Gh巨牙海民助Miracle-死里逃生
2018/04/07 DOTA
python分割和拼接字符串
2013/11/01 Python
黑科技 Python脚本帮你找出微信上删除你好友的人
2016/01/07 Python
Python 实现使用dict 创建二维数据、DataFrame
2018/04/13 Python
python求解数组中两个字符串的最小距离
2018/09/27 Python
pyqt弹出新对话框,以及关闭对话框获取数据的实例
2019/06/18 Python
python Yaml、Json、Dict之间的转化
2020/10/19 Python
篝火晚会主持词
2014/03/25 职场文书
婚庆公司计划书
2014/09/15 职场文书
介绍信的格式
2015/01/30 职场文书
mybatis 解决从列名到属性名的自动映射失败问题
2021/06/30 Java/Android
python调用ffmpeg命令行工具便捷操作视频示例实现过程
2021/11/01 Python