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 相关文章推荐
JS控件autocomplete 0.11演示及下载 1月5日已更新
Jan 09 Javascript
Javascript Boolean、Nnumber、String 强制类型转换的区别详细介绍
Dec 13 Javascript
jQuery实现密保互斥问题解决方案
Aug 16 Javascript
node.js中的url.resolve方法使用说明
Dec 10 Javascript
JS解析XML文件和XML字符串详解
Apr 17 Javascript
对象题目的一个坑 理解Javascript对象
Dec 22 Javascript
高性能JavaScript循环语句和条件语句
Jan 20 Javascript
AngularJS 使用 UI Router 实现表单向导
Jan 29 Javascript
小程序云开发实现数据库异步操作同步化
May 18 Javascript
微信小程序项目总结之记账小程序功能的实现(包括后端)
Aug 20 Javascript
JavaScript 监听组合按键思路及代码实现
Jul 28 Javascript
vue cli4中mockjs在dev环境和build环境的配置详情
Apr 06 Vue.js
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
thinkphp获取栏目和文章当前位置的方法
2014/10/29 PHP
Laravel中如何增加自定义全局函数详解
2017/05/09 PHP
PHP基于PDO扩展操作mysql数据库示例
2018/12/24 PHP
PHP实现cookie跨域session共享的方法分析
2019/08/23 PHP
关于__defineGetter__ 和__defineSetter__的说明
2007/05/12 Javascript
iis6+javascript Add an Extension File
2007/06/13 Javascript
jquery1.9 下检测浏览器类型和版本的方法
2013/12/26 Javascript
node.js中的console.log方法使用说明
2014/12/09 Javascript
jquery实现聚光灯效果的方法
2015/02/06 Javascript
JavaScript原型及原型链终极详解
2016/01/04 Javascript
EasyUi combotree 实现动态加载树节点
2016/04/01 Javascript
jQuery文字提示与图片提示效果实现方法
2016/07/04 Javascript
vue.js实现备忘录功能的方法
2017/07/10 Javascript
Vue filter格式化时间戳时间成标准日期格式的方法
2018/09/16 Javascript
利用Dectorator分模块存储Vuex状态的实现
2019/02/05 Javascript
解决vue打包后刷新页面报错:Unexpected token
2019/08/27 Javascript
es6中new.target的作用和使用场景简单示例分析
2020/03/14 Javascript
Antd-vue Table组件添加Click事件,实现点击某行数据教程
2020/11/17 Javascript
python搭建简易服务器分析与实现
2012/12/15 Python
python3.3实现乘法表示例
2014/02/07 Python
Python 备份程序代码实现
2017/03/06 Python
Python实现的读取/更改/写入xml文件操作示例
2018/08/30 Python
python编写简单端口扫描器
2019/09/04 Python
python实现自动化报表功能(Oracle/plsql/Excel/多线程)
2019/12/02 Python
关于HTML5+ API plusready的兼容问题
2020/11/20 HTML / CSS
80年代复古T恤:TruffleShuffle
2018/07/02 全球购物
Fanatics英国官网:美国体育电商
2018/11/06 全球购物
全球领先的全景影像品牌:Insta360
2019/08/21 全球购物
创先争优活动方案
2014/02/12 职场文书
市场总经理岗位职责
2014/04/11 职场文书
我是一名护士演讲稿
2014/08/28 职场文书
班主任先进事迹材料
2014/12/17 职场文书
毕业实习指导教师评语
2014/12/31 职场文书
世界红十字日活动总结
2015/02/10 职场文书
python四个坐标点对图片区域最小外接矩形进行裁剪
2021/06/04 Python
俄罗斯十大城市人口排名,第三首都仅排第六,第二是北方首都
2022/03/20 杂记