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 相关文章推荐
Javascript优化技巧(文件瘦身篇)
Jan 28 Javascript
Javascript变量函数浅析
Sep 02 Javascript
JS+CSS实现一个气泡提示框
Aug 18 Javascript
js有序数组的连接问题
Oct 01 Javascript
如何动态的导入js文件具体该怎么实现
Jan 14 Javascript
javascript实现网页子页面遍历回调的方法(涉及 window.frames、递归函数、函数上下文)
Jul 27 Javascript
jquery datatable服务端分页
Aug 31 Javascript
js点击任意区域弹出层消失实现代码
Dec 27 Javascript
浅谈React Native 中组件的生命周期
Sep 08 Javascript
JavaScript继承定义与用法实践分析
May 28 Javascript
React手稿之 React-Saga的详解
Nov 12 Javascript
如何使用webpack打包一个库library的方法步骤
Dec 18 Javascript
从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 a simple smtp class
2007/11/26 PHP
YII2框架使用控制台命令的方法分析
2020/03/18 PHP
详解使用php-cs-fixer格式化代码
2020/09/16 PHP
Prototype Function对象 学习
2009/07/12 Javascript
js中top、clientTop、scrollTop、offsetTop的区别 文字详细说明版
2011/01/08 Javascript
增强用户体验友好性之jquery easyui window 窗口关闭时的提示
2012/06/22 Javascript
表单元素与非表单元素刷新区别详细解析
2013/11/06 Javascript
JS创建自定义表格具体实现
2014/02/11 Javascript
Js操作树节点自动折叠展开的几种方法
2014/05/05 Javascript
用js传递value默认值的示例代码
2014/09/11 Javascript
JavaScript中的return语句简单介绍
2015/12/07 Javascript
利用JS判断字符串是否含有数字与特殊字符的方法小结
2016/11/25 Javascript
layer弹出层中H5播放器全屏出错的解决方法
2017/02/21 Javascript
详解Vue使用命令行搭建单页面应用
2017/05/24 Javascript
详解webpack 如何集成第三方js库
2017/06/29 Javascript
mint-ui的search组件在键盘显示搜索按钮的实现方法
2017/10/27 Javascript
JS中锚点链接点击平滑滚动并自由调整到顶部位置
2021/02/06 Javascript
Python中协程用法代码详解
2018/02/10 Python
Pyqt5 实现跳转界面并关闭当前界面的方法
2019/06/19 Python
基于Python绘制美观动态圆环图、饼图
2020/06/03 Python
Python直接赋值及深浅拷贝原理详解
2020/09/05 Python
一家外企的面试题目(C/C++面试题,C语言面试题)
2014/03/24 面试题
新锐科技Java程序员面试题
2016/07/25 面试题
Java中的类包括什么内容?设计时要注意哪些方面
2012/05/23 面试题
电子商务专业自我鉴定
2013/12/18 职场文书
门卫人员岗位职责
2013/12/24 职场文书
《少年王勃》教学反思
2014/04/27 职场文书
人力资源职位说明书
2014/07/29 职场文书
四风问题查摆材料
2014/08/25 职场文书
爱岗敬业事迹材料
2014/12/24 职场文书
教师考核表个人总结
2015/02/12 职场文书
面试通知邮件
2015/04/20 职场文书
2015年话务员工作总结
2015/04/29 职场文书
毕业实习证明范本
2015/06/16 职场文书
2016感恩父亲节主题广播稿
2015/12/18 职场文书
《卖火柴的小女孩》教学反思
2016/02/19 职场文书