怎样操作vue2.0 移动端实现下拉刷新和上拉加载

这次给大家带来怎样操作vue2.0 移动实现下拉刷新和上拉加载,操作vue2.0 移动端实现下拉刷新和上拉加载的注意事项有哪些,下面就是实战案例,一起来看一下。

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

 

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

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('https://api.github.com/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('https://api.github.com/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 = 'none'; return; } } done() // call done }, (response) => { console.log('error'); }); } }, components : {'v-scroll': Scroll }}

登录后复制

相信看了本文案例你已经掌握了方法,更多精彩请关注【创想鸟】其它相关文章!

推荐阅读:

怎样使用JS获取DOM 元素绝对位置

Vue前端开发有哪些规范

以上就是怎样操作vue2.0 移动端实现下拉刷新和上拉加载的详细内容,更多请关注【创想鸟】其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至253000106@qq.com举报,一经查实,本站将立刻删除。

发布者:PHP中文网,转转请注明出处:https://www.chuangxiangniao.com/p/2750930.html

(0)
上一篇 2025年3月8日 05:44:53
下一篇 2025年3月1日 15:49:32

AD推荐 黄金广告位招租... 更多推荐

相关推荐

  • 如何利用Vue组件实现弹窗功能

    这次给大家带来如何利用Vue组件实现弹窗功能,利用Vue组件实现弹窗功能的注意事项有哪些,下面就是实战案例,一起来看一下。 最近在使用element-ui框架,用到了Dialog对话框组件,大致实现的效果,跟我之前自己在移动端项目里面弄的一…

    2025年3月8日
    200
  • 如何做出vue移动端实现下拉刷新功能

    这次给大家带来如何做出vue移动端实现下拉刷新功能,做出vue移动端实现下拉刷新功能的注意事项有哪些,下面就是实战案例,一起来看一下。 说这个功能之前,大家要先了解一下,要怎么触发滚动条事件。 一定要注意,所有滚动事件都必须要满足这个条件,…

    2025年3月8日
    200
  • 怎样使用JS实现哈夫曼编码

    这次给大家带来怎样使用js实现哈夫曼编码,使用js实现哈夫曼编码的注意事项有哪些,下面就是实战案例,一起来看一下。 原始版 function cal(str) { if (typeof str !== ‘string’ || str.len…

    编程技术 2025年3月8日
    200
  • 如何使用jQuery实现雪花飘落

    这次给大家带来如何使用jQuery实现雪花飘落,使用jQuery实现雪花飘落的注意事项有哪些,下面就是实战案例,一起来看一下。 前言 最近闲来无事,准备写个雪花飘落的效果,没有写太牛逼的特效,极大的简化了代码量,这样容易读取代码,用起来也很…

    2025年3月8日 编程技术
    200
  • 在vue中如何实现父组件向子组件传递多个数据

    下面我就为大家分享一篇vue父组件向子组件传递多个数据的实例,具有很好的参考价值,希望对大家有所帮助。 在平时我们使用VUE组件的时候,经常需要将父组件的某些数据传递给子组件,这个时候,我们通常会有很多的办法,这里主要分为两种情况: 第一种…

    编程技术 2025年3月8日
    200
  • 在React中使用Native如何实现自定义下拉刷新上拉加载的列表

    本篇文章主要介绍了react native 自定义下拉刷新上拉加载的列表的示例,现在分享给大家,也给大家做个参考。 在移动端开发中列表页是非常常见的页面,在React Native中我们一般使用FlatList或SectionList组件实…

    编程技术 2025年3月8日
    200
  • 怎样操作node实现登录图片验证码

    这次给大家带来怎样操作node实现登录图片验证码,操作node实现登录图片验证码的注意事项有哪些,下面就是实战案例,一起来看一下。 1.安装 cnpm i svg-captcha –save 登录后复制 2.在使用的地方导入 var sv…

    2025年3月8日 编程技术
    200
  • 怎样使用Vue实现proxy代理

    这次给大家带来怎样使用Vue实现proxy代理,使用Vue实现proxy代理的注意事项有哪些,下面就是实战案例,一起来看一下。 // config/index.js 文件proxyTable: { ‘/api’: { target: ‘ht…

    编程技术 2025年3月8日
    200
  • 利用Angular如何实现变化检测

    这篇文章主要介绍了浅谈angular 的变化检测的方法,现在分享给大家,也给大家做个参考。 Change Detection (变化检测) 是 Angular 2 中最重要的一个特性。当组件中的数据发生变化的时候,Angular 2 能检测…

    编程技术 2025年3月8日
    200
  • 怎样使用Vue实现倒计时按钮

    这次给大家带来怎样使用Vue实现倒计时按钮,使用Vue实现倒计时按钮的注意事项有哪些,下面就是实战案例,一起来看一下。 在项目开发里,我们经常会遇到发送验证码、点击了之后有60秒倒计时的按钮,很常见却也很简单,但是在写这个按钮的时候有个别地…

    2025年3月8日 编程技术
    200

发表回复

登录后才能评论