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 相关文章推荐
JS 自动完成 AutoComplete(Ajax 查询)
Jul 07 Javascript
JQUERY1.6 使用方法四 检测浏览器
Nov 23 Javascript
jQuery实现类似滑动门切换效果的层切换
Sep 23 Javascript
一张Web前端的思维导图分享
Jul 03 Javascript
Jquery插件easyUi实现表单验证示例
Dec 15 Javascript
VUEJS实战之利用laypage插件实现分页(3)
Jun 13 Javascript
JavaScript toUpperCase()方法使用详解
Aug 26 Javascript
Javascript 动态改变imput type属性
Nov 01 Javascript
Vue.js 2.0和Cordova开发webApp环境搭建方法
Feb 26 Javascript
jQuery实现弹幕特效
Nov 29 jQuery
vue 通过base64实现图片下载功能
Dec 19 Vue.js
详解TypeScript的基础类型
Feb 18 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学习笔记 php中面向对象三大特性之一[封装性]的应用
2011/06/13 PHP
php跨域cookie共享使用方法
2014/02/20 PHP
php实例分享之mysql数据备份
2014/05/19 PHP
PHP实现一维数组转二维数组的方法
2015/02/25 PHP
PHP微信开发之模板消息回复
2016/06/24 PHP
JS是按值传递还是按引用传递
2015/01/30 Javascript
jquery实现一个简单的表单验证实例
2016/03/30 Javascript
Javascript iframe交互并兼容各种浏览器的解决方法
2016/07/12 Javascript
JS简单去除数组中重复项的方法
2016/09/13 Javascript
node.JS md5加密中文与php结果不一致的解决方法
2017/05/05 Javascript
layui弹出层效果实现代码
2017/05/19 Javascript
JS库particles.js创建超炫背景粒子插件(附源码下载)
2017/09/13 Javascript
vue.js做一个简单的编辑菜谱功能
2018/05/08 Javascript
JS使用数组实现的队列功能示例
2019/03/04 Javascript
JavaScript模块管理的简单实现方式详解
2019/06/15 Javascript
vue控制多行文字展开收起的实现示例
2019/10/11 Javascript
layui table表格数据的新增,修改,删除,查询,双击获取行数据方式
2019/11/14 Javascript
[07:27]DOTA2卡尔工作室 英雄介绍水晶室女篇
2013/06/21 DOTA
[03:07]2015国际邀请赛选手档案EHOME.rOtK 是什么让他落泪?
2015/07/31 DOTA
[01:57]2018DOTA2亚洲邀请赛赛前采访-iG
2018/04/03 DOTA
[43:14]Liquid vs Optic 2018国际邀请赛淘汰赛BO3 第二场 8.21
2018/08/22 DOTA
Python中函数的参数传递与可变长参数介绍
2015/06/30 Python
python使用PyCharm进行远程开发和调试
2017/11/02 Python
python3.5 tkinter实现页面跳转
2018/01/30 Python
Python中将两个或多个list合成一个list的方法小结
2019/05/12 Python
python multiprocessing模块用法及原理介绍
2019/08/20 Python
Django-silk性能测试工具安装及使用解析
2020/11/28 Python
详解解决jupyter不能使用pytorch的问题
2021/02/18 Python
美国优质宠物用品购买网站:Muttropolis
2020/02/17 全球购物
大学生专业个人学习的自我评价
2013/10/26 职场文书
食品安全承诺书
2014/05/22 职场文书
感恩教师节演讲稿
2014/09/03 职场文书
生产工厂门卫岗位职责
2014/09/26 职场文书
班级联欢会主持词
2015/07/03 职场文书
《当代神农氏》教学反思
2016/02/23 职场文书
前端框架ECharts dataset对数据可视化的高级管理
2022/12/24 Javascript