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 相关文章推荐
jquery的Theme和Theme Switcher使用小结
Sep 08 Javascript
jquery自动将form表单封装成json的具体实现
Mar 17 Javascript
jquery选择器排除某个DOM元素的方法(实例演示)
Apr 25 Javascript
JavaScript数据结构与算法之栈详解
Mar 12 Javascript
node.js报错:Cannot find module 'ejs'的解决办法
Dec 14 Javascript
MUI 解决动态列表页图片懒加载再次加载不成功的bug问题
Apr 13 Javascript
基于打包工具Webpack进行项目开发实例
May 29 Javascript
Koa 使用小技巧(小结)
Oct 22 Javascript
angular4自定义表单控件[(ngModel)]的实现
Nov 23 Javascript
JavaScript动态创建二维数组的方法示例
Feb 01 Javascript
Vue混入mixins滚动触底的方法
Nov 22 Javascript
vue项目接口域名动态获取操作
Aug 13 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使用指定字符列表生成随机字符串的方法
2015/04/18 PHP
javawscript 三级菜单的实现原理
2009/07/01 Javascript
原生js实现shift/ctrl/alt按键的获取
2013/04/08 Javascript
js输出阴历、阳历、年份、月份、周示例代码
2014/01/29 Javascript
JavaScript基本的输出和嵌入式写法教程
2015/10/20 Javascript
js中substr,substring,indexOf,lastIndexOf,split,replace的用法详解
2015/11/09 Javascript
3种js实现string的substring方法
2015/11/09 Javascript
谈一谈javascript闭包
2016/01/28 Javascript
JS实现简单易用的手机端浮动窗口显示效果
2016/09/07 Javascript
AngularJS 中的Promise --- $q服务详解
2016/09/14 Javascript
AngularJs的UI组件ui-Bootstrap之Tooltip和Popover
2018/07/13 Javascript
js实现的格式化数字和金额功能简单示例
2019/07/30 Javascript
在vue-cli 3中给stylus、sass样式传入共享的全局变量
2019/08/12 Javascript
使用Python判断IP地址合法性的方法实例
2014/03/13 Python
Python 3实战爬虫之爬取京东图书的图片详解
2017/10/09 Python
Python科学画图代码分享
2017/11/29 Python
Python实现控制台中的进度条功能代码
2017/12/22 Python
有关Python的22个编程技巧
2018/08/29 Python
Python使用POP3和SMTP协议收发邮件的示例代码
2019/04/16 Python
pyqt 实现在Widgets中显示图片和文字的方法
2019/06/13 Python
python 求定积分和不定积分示例
2019/11/20 Python
解决pyCharm中 module 调用失败的问题
2020/02/12 Python
python异常处理、自定义异常、断言原理与用法分析
2020/03/23 Python
Django 允许局域网中的机器访问你的主机操作
2020/05/13 Python
总结python 三种常见的内存泄漏场景
2020/11/20 Python
日本小田急百货官网:Odakyu
2018/07/19 全球购物
创意爱尔兰礼物:Creative Irish Gifts
2020/01/29 全球购物
少先队学雷锋活动总结范文
2014/03/09 职场文书
社保转移委托书范本
2014/10/08 职场文书
介绍信的格式
2015/01/30 职场文书
乌镇导游词
2015/02/02 职场文书
2015教师节师德演讲稿
2015/03/19 职场文书
工作年限证明模板
2015/06/15 职场文书
导游词范文之颐和园/重庆/云台山
2019/09/10 职场文书
常用的MongoDB查询语句的示例代码
2021/07/25 MongoDB
SpringBoot深入分析讲解监听器模式下
2022/07/15 Java/Android