vue插件mescroll.js实现移动端上拉加载和下拉刷新


Posted in Javascript onMarch 07, 2019

做一个简单的移动端展示项目,后台分页后前端加载,实现上拉加载下一页,找了下,还是用这个mescroll.js插件好一点

1.npm安装

npm install --save mescroll.js //不要使用cnpm安装

导入(在哪个页面使用,则在哪个页面导入(这里的话,我使用全局导入会出现问题,若有错,还请大家指出,暂时想到的就是局部引入)):

import MescrollVue from ‘mescroll.js/mescroll.vue'

注册组件:

components: {
  MescrollVue // 注册mescroll组件
},

template使用

<mescroll-vue ref="mescroll" :down="mescrollDown" :up="mescrollUp" @init="mescrollInit" class="scrollView">
</mescroll-vue>

2.data里进行相关配置

data () {
 return {
  mescroll: null, // mescroll实例对象
  mescrollDown:{}, //下拉刷新的配置. (如果下拉刷新和上拉加载处理的逻辑是一样的,则mescrollDown可不用写了)
  mescrollUp: { // 上拉加载的配置.
    callback: this.upCallback, // 上拉回调,此处简写; 相当于 callback: function(page, mescroll) { }
    //以下是一些常用的配置,当然不写也可以的.
    page: {
      num: 0, //当前页 默认0,回调之前会加1; 即callback(page)会从1开始
      size: 10 //每页数据条数,默认10
    },
    noMoreSize: 5, //如果列表已无数据,可设置列表的总数量要大于5才显示无更多数据;避免列表数据过少(比如只有一条数据),显示无更多数据会不好看
    toTop: {
      //回到顶部按钮
      src: "./static/mescroll/mescroll-totop.png", //图片路径,默认null,支持网络图
      offset: 1000 //列表滚动1000px才显示回到顶部按钮
    },
    htmlContent: '<p class="downwarp-progress"></p><p class="downwarp-tip">下拉刷新 </p>', //布局内容
    empty: {
      //列表第一页无任何数据时,显示的空提示布局; 需配置warpId才显示
      warpId: "xxid", //父布局的id (1.3.5版本支持传入dom元素)
      icon: "./static/mescroll/mescroll-empty.png", //图标,默认null,支持网络图
      tip: "暂无相关数据~" //提示
    }
  },
  articleList: [] // 列表数据
 }
},
beforeRouteEnter (to, from, next) { // 如果没有配置回到顶部按钮或isBounce,则beforeRouteEnter不用写
  next(vm => {
   vm.$refs.mescroll.beforeRouteEnter() // 进入路由时,滚动到原来的列表位置,恢复回到顶部按钮和isBounce的配置
  })
},
beforeRouteLeave (to, from, next) { // 如果没有配置回到顶部按钮或isBounce,则beforeRouteLeave不用写
  this.$refs.mescroll.beforeRouteLeave() // 退出路由时,记录列表滚动的位置,隐藏回到顶部按钮和isBounce的配置
  next()
},
methods: {
 mescrollInit(mescroll) {
   this.mescroll = mescroll;
 },
 upCallback(page, mescroll) {
  this.$Request({
    url: "",
    method: "get",
    data: {
     page: page.num
    },
    success: res => {
     if (res.status == 1) {
      let data = page.num == 1 ? [] : this.articleList;
      data.push(...res.result.data);
      this.articleList = data;
      // 数据渲染成功后,隐藏下拉刷新的状态
      this.$nextTick(() => {
       mescroll.endSuccess(res.result.data.length);
      });
     }
    }
  });
 }
 }
}

3.style样式

.mescroll {
  position: fixed;
  padding-bottom: 1rem;
  top: 2px;
  bottom: 0;
  height: auto;
}

具体的配置可以参考:mescroll配置

4.加载完成后

可以在data中的mescrollUp项中进行底部没有更多数据时的提示信息,'END'及'加载中...'这些内容可以自己设置

htmlLoading: '<p class="upwarp-progress mescroll-rotate"></p><p class="upwarp-tip">加载中..</p>', //上拉加载中的布局
htmlNodata: '<p class="upwarp-nodata">-- END --</p>', //无数据的布局

可以查看源码进行设置: mescroll源码(GitHub)

5.scroll属性在ios手机上回出现卡顿问题

在进行滚动的这个容器样式中添加这个属性:

-webkit-overflow-scrolling:touch;

但是的话,填加了这个兼容会导致定位为position:fixed的失去效果,看了一些资料,使用position:absolute可以解决,这个我没有具体的再去实验下,若有好的方法,还请大家能够在评论里告知下,感激不尽

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
分享27款非常棒的jQuery 表单插件
Mar 28 Javascript
jquery easyui 对于开始时间小于结束时间的判断示例
Mar 22 Javascript
jQuery插件分享之分页插件jqPagination
Jun 06 Javascript
connect中间件session、cookie的使用方法分享
Jun 17 Javascript
Internet Explorer 11 浏览器介绍:别叫我IE
Sep 28 Javascript
JS实现文字放大效果的方法
Mar 03 Javascript
jQuery解决input超多的表单提交
Aug 10 Javascript
详解javascript函数的参数
Nov 10 Javascript
jQuery过滤特殊字符及JS字符串转为数字
May 26 Javascript
详解webpack异步加载业务模块
Jun 23 Javascript
vue学习笔记之作用域插槽实例分析
Feb 01 Javascript
vue elementUI表格控制对应列
Apr 13 Vue.js
从0到1构建vueSSR项目之node以及vue-cli3的配置
Mar 07 #Javascript
从0到1构建vueSSR项目之路由的构建
Mar 07 #Javascript
bootstrap-table实现表头固定以及列固定的方法示例
Mar 07 #Javascript
js如何获取图片url的Blob值并预览示例代码
Mar 07 #Javascript
mpvue全局引入sass文件的方法步骤
Mar 06 #Javascript
angular6根据environments配置文件更改开发所需要的环境的方法
Mar 06 #Javascript
vue项目前端埋点的实现
Mar 06 #Javascript
You might like
PHP函数strip_tags的一个bug浅析
2014/05/22 PHP
php获取QQ头像并显示的方法
2014/12/23 PHP
PHP中快速生成随机密码的几种方式
2017/04/17 PHP
javascript StringBuilder类实现
2008/12/22 Javascript
JavaScript高级程序设计 客户端存储学习笔记
2011/09/10 Javascript
javascript抽象工厂模式详细说明
2014/12/16 Javascript
javascript中cookie对象用法实例分析
2015/01/30 Javascript
jQuery+PHP+MySQL二级联动下拉菜单实例讲解
2015/10/27 Javascript
基于jQuery实现带动画效果超炫酷的弹出对话框(附源码下载)
2016/02/22 Javascript
javascript基础语法——全面理解变量和标识符
2016/06/02 Javascript
vue.js入门(3)——详解组件通信
2016/12/02 Javascript
EsLint入门学习教程
2017/02/17 Javascript
js实现简单的二级联动效果
2017/03/09 Javascript
深入理解JavaScript创建对象的多种方式以及优缺点
2017/06/01 Javascript
vue项目前端埋点的实现
2019/03/06 Javascript
3分钟读懂移动端rem使用方法(推荐)
2019/05/06 Javascript
前后端常见的几种鉴权方式(小结)
2019/08/04 Javascript
vue组件 keep-alive 和 transition 使用详解
2019/10/11 Javascript
原生JS实现微信通讯录
2020/06/18 Javascript
利用selenium 3.7和python3添加cookie模拟登陆的实现
2017/11/20 Python
Python cookbook(数据结构与算法)对切片命名清除索引的方法
2018/03/13 Python
Python多线程中阻塞(join)与锁(Lock)使用误区解析
2018/04/27 Python
Python实用库 PrettyTable 学习笔记
2019/08/06 Python
Python 解决火狐浏览器不弹出下载框直接下载的问题
2020/03/09 Python
Python实现常见的几种加密算法(MD5,SHA-1,HMAC,DES/AES,RSA和ECC)
2020/05/09 Python
使用Python获取爱奇艺电视剧弹幕数据的示例代码
2021/01/12 Python
美国开幕式潮店:Opening Ceremony
2018/02/10 全球购物
汉森冲浪板:Hansen Surfboards
2018/05/19 全球购物
是否有自动比较结构的方法
2015/06/03 面试题
Linux常见面试题
2013/03/18 面试题
销售简历自我评价怎么写
2014/09/26 职场文书
高中班主任工作总结(范文)
2019/08/20 职场文书
OpenCV3.3+Python3.6实现图片高斯模糊
2021/05/18 Python
swagger如何返回map字段注释
2021/07/03 Java/Android
python 实现图片特效处理
2022/04/03 Python
windows server 2012安装FTP并配置被动模式指定开放端口
2022/06/10 Servers