vue使用better-scroll实现下拉刷新、上拉加载


Posted in Javascript onNovember 23, 2018

本文目的是为了实现列表的下拉刷新、上拉加载,所以选择了better-scroll这个库。

用好这个库,需要理解下面说明

  • 必须包含两个大的div,外层和内层div
  • 外层div设置可视的大小(宽或者高)-有限制宽或高
  • 内层div,包裹整个可以滚动的部分
  • 内层div高度一定大于外层div的宽或高,才能滚动

1、先开始写一个简单demo,最基本的代码架构

template

<div ref="wrapper" class="wrapper">
 <ul class="content">
 <li>...</li>
 <li>...</li>
 </ul>
</div>

css

/*对外层div进行了高度上的限制*/
.wrapper {
 display: fixed;
 left: 0;
 top: 0;
 bottom: 0;
 width: 100%;
 height:300px;
 overflow:hidden;
}
.content {
 width:100%;
 height:800px;
 background:blue;
}

script

import BScroll from 'better-scroll'
this.scroll = new BScroll(new BScroll(this.$refs.wrapper))

2、进行改造升级,加上上拉刷新、下拉加载的代码。

mounted () {
 this.scroll = new BScroll(this.$refs.wrapper, {
 // 上拉加载
 pullUpLoad: {
 // 当上拉距离超过30px时触发 pullingUp 事件
 threshold: -30
 },
 // 下拉刷新
 pullDownRefresh: {
 // 下拉距离超过30px触发pullingDown事件
 threshold: 30,
 // 回弹停留在距离顶部20px的位置
 stop: 20
 }
 })
 this.scroll.on('pullingUp', () => {
 console.log('处理上拉加载操作')
 setTimeout(() => {
 // 事情做完,需要调用此方法告诉 better-scroll 数据已加载,否则上拉事件只会执行一次
 this.scroll.finishPullUp()
 }, 2000)
 })
 this.scroll.on('pullingDown', () => {
 console.log('处理下拉刷新操作')
 setTimeout(() => {
 console.log('asfsaf')
 // 事情做完,需要调用此方法告诉 better-scroll 数据已加载,否则下拉事件只会执行一次
 this.scroll.finishPullDown()
 }, 2000)
 })
 }

原理已经讲清楚了,上面的代码是一个功能示例,码友结合自己项目扩展就行啦。

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

Javascript 相关文章推荐
收藏Javascript中常用的55个经典技巧
Aug 12 Javascript
Prototype中dom对象方法汇总
Sep 17 Javascript
判断用户的在线状态 onbeforeunload事件
Mar 05 Javascript
jquery 跳到顶部和底部动画2句代码简单实现
Jul 18 Javascript
JS实现时间格式化的方式汇总
Oct 16 Javascript
javascritp添加url参数将参数加入到url中
Sep 25 Javascript
JavaScript父子窗体间的调用方法
Mar 31 Javascript
基于JS实现弹出一个隐藏的div窗口body页面变成灰色并且不可被编辑
Dec 14 Javascript
浅谈用Webpack路径压缩图片上传尺寸获取的问题
Feb 22 Javascript
关于echarts在节点显示动态数据及添加提示文本所遇到的问题
Apr 20 Javascript
JS内部事件机制之单线程原理
Jul 02 Javascript
css配合JavaScript实现tab标签切换效果
Oct 11 Javascript
详解Vue2.0组件的继承与扩展
Nov 23 #Javascript
angular4自定义表单控件[(ngModel)]的实现
Nov 23 #Javascript
详解Angular中实现自定义组件的双向绑定的两种方法
Nov 23 #Javascript
Vue.js组件间通信方式总结【推荐】
Nov 23 #Javascript
vue-cli 2.*中导入公共less文件的方法步骤
Nov 22 #Javascript
vue全局使用axios的方法实例详解
Nov 22 #Javascript
vue中的ref和$refs的使用
Nov 22 #Javascript
You might like
PHP Ajax实现页面无刷新发表评论
2007/01/02 PHP
DISCUZ 论坛管理员密码忘记的解决方法
2009/05/14 PHP
curl不使用文件存取cookie php使用curl获取cookie示例
2014/01/26 PHP
php in_array() 检查数组中是否存在某个值详解
2016/11/23 PHP
thinkPHP中配置的读取与C方法详解
2016/12/05 PHP
解决js正则匹配换行问题实现代码
2012/12/10 Javascript
Javacript实现颜色梯度变化和渐变的效果代码
2013/05/31 Javascript
document.forms[].submit()使用介绍
2014/02/19 Javascript
Javascript实现简单二级下拉菜单实例
2014/06/15 Javascript
JavaScript避免内存泄露及内存管理技巧
2014/09/05 Javascript
jQuery圆形统计图开发实例
2015/01/04 Javascript
浅谈JavaScript数据类型
2015/03/03 Javascript
jQuery插件扩展extend的简单实现原理
2016/06/24 Javascript
angular2倒计时组件使用详解
2017/01/12 Javascript
深入探究node之Transform
2017/07/20 Javascript
详解nodejs通过响应回写的方式渲染页面资源
2018/04/07 NodeJs
Angular7.2.7路由使用初体验
2019/03/01 Javascript
vue实现行列转换的一种方法
2019/08/06 Javascript
[03:38]2014DOTA2西雅图国际邀请赛 VG战队巡礼
2014/07/07 DOTA
[33:23]Secret vs Serenity 2018国际邀请赛小组赛BO2 第二场 8.16
2018/08/17 DOTA
Python 不同对象比较大小示例探讨
2014/08/21 Python
详解Python2.x中对Unicode编码的使用
2015/04/03 Python
Windows中安装使用Virtualenv来创建独立Python环境
2016/05/31 Python
数据清洗--DataFrame中的空值处理方法
2018/07/03 Python
python做反被爬保护的方法
2019/07/01 Python
浅谈对pytroch中torch.autograd.backward的思考
2019/12/27 Python
python requests包的request()函数中的参数-params和data的区别介绍
2020/05/05 Python
matplotlib运行时配置(Runtime Configuration,rc)参数rcParams解析
2021/01/05 Python
Python实现给PDF添加水印的方法
2021/01/25 Python
韩国邮政旗下生鲜食品网上超市:epost
2016/08/27 全球购物
澳大利亚领先的内衣店:Bendon Lingerie澳大利亚
2020/05/15 全球购物
作为网站管理者应当如何防范XSS
2014/08/16 面试题
通信工程专业毕业生推荐信
2013/12/25 职场文书
离婚协议书该怎么写
2014/10/04 职场文书
2019年七夕情人节浪漫祝福语大全!
2019/08/08 职场文书
js 实现Material UI点击涟漪效果示例
2022/09/23 Javascript