vue实现的上拉加载更多数据/分页功能示例


Posted in Javascript onMay 25, 2019

本文实例讲述了vue实现的上拉加载更多数据/分页功能。分享给大家供大家参考,具体如下:

加载状态

<div v-if='has_log == 0'>
   <load-more tip="上拉加载" :show-loading="false" background-color="#fbf9fe"></load-more>
  </div>
  <div v-if='has_log == 1'>
   <load-more tip="正在加载" :show-loading="true"></load-more>
  </div>
  <div v-if='has_log == 2'>
    <load-more tip="没有更多数据了" :show-loading="false" background-color="#fbf9fe"></load-more>
  </div>

js

export default {
 name: '',
 data () {
  return {
   list: [],
   now_item: '',
   current_index: 0,
   list_param: {page: 1},
   no_data: false,
   has_log: 0
  }
 },
 components: {
  XInput
 },
 created () {
  this.get('/api/index/index', this.list_param).then((data) => {
   this.list = data.data.data
   this.list_param.page += 1
  })
  window.addEventListener('scroll', this.onScroll)
 },
 methods: {
  onScroll () {
   this.has_log = 1
   let innerHeight = document.querySelector('#app').clientHeight
   let outerHeight = document.documentElement.clientHeight
   let scrollTop = document.documentElement.scrollTop
   // console.log(innerHeight + ' ' + outerHeight + ' ' + scrollTop)
   // console.log(outerHeight + scrollTop - 30)
   // console.log(innerHeight)
   if (outerHeight + scrollTop === innerHeight + 57) {
    if (this.no_data === true) {
     this.has_log = 2
     return false
    }
    this.get('/api/index/index', this.list_param).then((data) => {
     if (data.data.data.length > 0) {
      this.list = [...this.list, ...data.data.data]
      this.list_param.page = this.list_param.page + 1
      this.has_log = 0
     } else {
      this.has_log = 2
      this.no_data = true
     }
    })
   }
  }
 }
}

希望本文所述对大家vue.js程序设计有所帮助。

Javascript 相关文章推荐
JavaScript 异步调用框架 (Part 3 - 代码实现)
Aug 04 Javascript
自制轻量级仿jQuery.boxy对话框插件代码
Oct 26 Javascript
jquery获得下拉框值的代码
Aug 13 Javascript
提示$ is not defined错误分析及解决
Apr 09 Javascript
js 显示base64编码的二进制流网页图片
Apr 04 Javascript
纯js实现遮罩层效果原理分析
May 27 Javascript
JavaScript实现计算字符串中出现次数最多的字符和出现的次数
Mar 12 Javascript
老生常谈javascript的面向对象思想
Aug 22 Javascript
jQuery+SpringMVC中的复选框选择与传值实例
Jan 08 jQuery
解决vue跨域axios异步通信问题
Apr 17 Javascript
详解一个小实例理解js原型和继承
Apr 24 Javascript
详解JavaScript执行模型
Nov 16 Javascript
vue实现的请求服务器端API接口示例
May 25 #Javascript
Vue Autocomplete 自动完成功能简单示例
May 25 #Javascript
泛谈JS逻辑判断选择器 || &amp;&amp;
May 24 #Javascript
了解JavaScript中的选择器
May 24 #Javascript
Javascript通过控制类名更改样式
May 24 #Javascript
redux.js详解及基本使用
May 24 #Javascript
javascript获取元素的计算样式
May 24 #Javascript
You might like
收音机发烧友应当熟知的100条知识
2021/03/02 无线电
一个简单的网页密码登陆php代码
2012/07/17 PHP
php输入数据统一类实例
2015/02/23 PHP
优化WordPress的Google字体以加速国内服务器上的运行
2015/11/24 PHP
PHP获取真实IP及IP模拟方法解析
2020/11/24 PHP
jQuery阻止冒泡和HTML默认操作
2010/11/17 Javascript
页面定时刷新(1秒刷新一次)
2013/11/22 Javascript
javascript和jquery实现设置和移除文本框默认值效果代码
2015/01/13 Javascript
Javascript中的return作用及javascript return关键字用法详解
2015/11/05 Javascript
jquery无限级联下拉菜单简单实例演示
2015/11/23 Javascript
使用Web Uploader实现多文件上传
2016/06/08 Javascript
JS代码实现百度地图 画圆 删除标注
2016/10/12 Javascript
Ajax+FormData+javascript实现无刷新表单信息提交
2016/10/24 Javascript
Vue父组件调用子组件事件方法
2018/02/23 Javascript
Node.js+ELK日志规范的实现
2019/05/23 Javascript
JavaScript实现随机点名程序
2020/03/25 Javascript
微信小程序onShareTimeline()实现分享朋友圈
2021/01/07 Javascript
python基础教程之获取本机ip数据包示例
2014/02/10 Python
八大排序算法的Python实现
2021/01/28 Python
python2.7实现FTP文件下载功能
2018/04/15 Python
Jupyter notebook远程访问服务器的方法
2018/05/24 Python
Python魔法方法功能与用法简介
2019/04/04 Python
Python3批量移动指定文件到指定文件夹方法示例
2019/09/02 Python
pytorch 改变tensor尺寸的实现
2020/01/03 Python
简单了解Django项目应用创建过程
2020/07/06 Python
python 偷懒技巧——使用 keyboard 录制键盘事件
2020/09/21 Python
python多线程爬取西刺代理的示例代码
2021/01/30 Python
HTML5实现直播间评论滚动效果的代码
2020/05/27 HTML / CSS
捷克鲜花配送:Florea.cz
2018/10/29 全球购物
什么是方法的重载
2013/06/24 面试题
货物运输服务质量承诺书
2014/05/29 职场文书
外贸英文求职信范文
2015/03/19 职场文书
心灵捕手观后感
2015/06/02 职场文书
小学生暑假安全公约
2015/07/14 职场文书
2016年精神文明建设先进个人事迹材料
2016/02/29 职场文书
MySQL 自动填充 create_time 和 update_time
2022/05/20 MySQL