100字范文,内容丰富有趣,生活中的好帮手!
100字范文 > vue2.0 移动端实现下拉刷新和上拉加载更多的例子

vue2.0 移动端实现下拉刷新和上拉加载更多的例子

时间:2022-08-23 03:48:09

相关推荐

vue2.0 移动端实现下拉刷新和上拉加载更多的例子

web前端|js教程

vue2.0,移动端,下拉刷新,vue2.0下拉刷新,vue,2.0,下拉加载插件

web前端-js教程

本篇文章主要介绍vue2.0 移动端实现下拉刷新和上拉加载更多的示例,内容挺不错的,现在分享给大家,也给大家做个参考。

微信电影源码带会员中心,ubuntu关闭屏锁,tomcat改浏览器名字,爬虫平台的危害,php编辑器哪个好用,seo知识视频lzw

本人正在基于 vue2.0 + webpack + es6 搭建前端架构,整理了部分插件,下面这个是下拉更新 上拉更多的,挺好用的,分享给大家。

微信h5测试源码,ubuntu编码器,tomcat日志名动态改变,seo爬虫公式,文本查询php,河东区万词霸屏seo优化公司lzw

直接上代码,不懂的多看几遍,下面我换会告诉大家如何使用。

jquery之家源码,ubuntu退出插入,安卓tomcat项目权限,爬虫提交功能,php怎么添加背景图片,金华seo推广服务哪家公司好lzw

下拉更新松开更新更新中
加载中……

export default { props: { offset: { type: Number, default: 40 }, enableInfinite: { type: Boolean, default: true }, enableRefresh: { type: Boolean, default: true }, onRefresh: { type: Function, default: undefined, required: false }, onInfinite: { type: Function, default: undefined, require: false } }, data() { return { top: 0, state: 0, startY: 0, touching: false, infiniteLoading: false } }, methods: { touchStart(e) { this.startY = e.targetTouches[0].pageY this.startScroll = this.$el.scrollTop || 0 this.touching = true }, touchMove(e) { if (!this.enableRefresh || this.$el.scrollTop > 0 || !this.touching) { return } let diff = e.targetTouches[0].pageY - this.startY - this.startScroll if (diff > 0) e.preventDefault() this.top = Math.pow(diff, 0.8) + (this.state === 2 ? this.offset : 0) if (this.state === 2) { // in refreshing return } if (this.top >= this.offset) { this.state = 1 } else { this.state = 0 } }, touchEnd(e) { if (!this.enableRefresh) return this.touching = false if (this.state === 2) { // in refreshing this.state = 2 this.top = this.offset return } if (this.top >= this.offset) { // do refresh this.refresh() } else { // cancel refresh this.state = 0 this.top = 0 } }, refresh() { this.state = 2 this.top = this.offset this.onRefresh(this.refreshDone) }, refreshDone() { this.state = 0 this.top = 0 }, infinite() { this.infiniteLoading = true this.onInfinite(this.infiniteDone) }, infiniteDone() { this.infiniteLoading = false }, onScroll(e) { if (!this.enableInfinite || this.infiniteLoading) { return } let outerHeight = this.$el.clientHeight let innerHeight = this.$el.querySelector(.inner).clientHeight let scrollTop = this.$el.scrollTop let ptrHeight = this.onRefresh ? this.$el.querySelector(.pull-refresh).clientHeight : 0 let infiniteHeight = this.$el.querySelector(.load-more).clientHeight let bottom = innerHeight - outerHeight - scrollTop - ptrHeight if (bottom < infiniteHeight) this.infinite() } }}.yo-scroll { position: absolute; top: 2.5rem; right: 0; bottom: 0; left: 0; overflow: auto; -webkit-overflow-scrolling: touch; background-color: #ddd}.yo-scroll .inner { position: absolute; top: -2rem; width: 100%; transition-duration: 300ms;}.yo-scroll .pull-refresh { position: relative; left: 0; top: 0; width: 100%; height: 2rem; display: flex; align-items: center; justify-content: center;}.yo-scroll.touch .inner { transition-duration: 0ms;}.yo-scroll.down .down-tip { display: block;}.yo-scroll.up .up-tip { display: block;}.yo-scroll.refresh .refresh-tip { display: block;}.yo-scroll .down-tip,.yo-scroll .refresh-tip,.yo-scroll .up-tip { display: none;}.yo-scroll .load-more { height: 3rem; display: flex; align-items: center; justify-content: center;}

把上面组件拷贝一下,存成后缀是.vue的组件放到你的component下, 然后引入到页面 , 下面是我引用的demo

上代码: 里面有注释哦,有问题给我留言!

{{item.name}}{{item.name}} import Scroll from ./y-scroll/scroll;export default{ data () { return { counter : 1, //默认已经显示出15条数据 count等于一是让从16条开始加载 num : 15, // 一次显示多少条 pageStart : 0, // 开始页数 pageEnd : 0, // 结束页数 listdata: [], // 下拉更新数据存放数组 downdata: [] // 上拉更多的数据存放数组 } }, mounted : function(){ this.getList(); }, methods: { getList(){ let vm = this;vm.$http.get(/repos/typecho-fans/plugins/contents/).then((response) => {vm.listdata = response.data.slice(0,15); }, (response) => {console.log(error); }); }, onRefresh(done) { this.getList(); done() // call done}, onInfinite(done) { let vm = this; vm.$http.get(/repos/typecho-fans/plugins/contents/).then((response) => { vm.counter++; vm.pageEnd = vm.num * vm.counter; vm.pageStart = vm.pageEnd - vm.num; let arr = response.data; let i = vm.pageStart; let end = vm.pageEnd; for(; i= response.data.length){ this.$el.querySelector(.load-more).style.display = one; return; } } done() // call done}, (response) => {console.log(error); });} }, components : {v-scroll: Scroll }}

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。