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 相关文章推荐
event.srcElement 用法笔记e.target
Dec 18 Javascript
锋利的jQuery 要点归纳(一) jQuery选择器
Mar 21 Javascript
前端开发的开始---基于面向对象的Ajax类
Sep 17 Javascript
js实现动态改变字体大小代码
Jan 02 Javascript
JavaScript使用DeviceOne开发实战(二) 生成调试安装包
Dec 01 Javascript
关于BootStrap modal 在IOS9中不能弹出的解决方法(IOS 9 bootstrap modal ios 9 noticework)
Dec 14 Javascript
微信小程序 解决swiper不显示图片的方法
Jan 04 Javascript
Vue2几种常见开局方式详解
Sep 09 Javascript
通过vue-cli3构建一个SSR应用程序的方法
Sep 13 Javascript
微信小程序文字显示换行问题
Jul 28 Javascript
JavaScript阻止事件冒泡的方法
Dec 06 Javascript
Echarts如何重新渲染实例详解
May 30 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
PHPAnalysis中文分词类详解
2014/06/13 PHP
完美解决thinkphp唯一索引重复时出错的问题
2017/03/31 PHP
PHP获取访问设备信息的方法示例
2019/02/20 PHP
jquery 页面滚动到指定DIV实现代码
2013/09/25 Javascript
nodejs中操作mysql数据库示例
2014/12/20 NodeJs
javascript动态生成树形菜单的方法
2015/11/14 Javascript
Javascript将数字转化成为货币格式字符串
2016/06/22 Javascript
jQuery实现jQuery-form.js实现异步上传文件
2017/04/28 jQuery
浅谈nodejs中的类定义和继承的套路
2017/07/26 NodeJs
vue计算属性及使用详解
2018/04/02 Javascript
vue-cli 组件的导入与使用教程详解
2018/04/11 Javascript
利用Angular2的Observables实现交互控制的方法
2018/12/27 Javascript
在antd4.0中Form使用initialValue操作
2020/11/02 Javascript
[45:14]Optic vs VP 2018国际邀请赛淘汰赛BO3 第二场 8.24
2018/08/25 DOTA
python 参数列表中的self 显式不等于冗余
2008/12/01 Python
python检测lvs real server状态
2014/01/22 Python
Python实现批量读取word中表格信息的方法
2015/07/30 Python
python中os模块详解
2016/10/14 Python
python类的继承实例详解
2017/03/30 Python
详解django.contirb.auth-认证
2018/07/16 Python
在python里协程使用同步锁Lock的实例
2019/02/19 Python
pybind11和numpy进行交互的方法
2019/07/04 Python
Python API自动化框架总结
2019/11/12 Python
如何在scrapy中集成selenium爬取网页的方法
2020/11/18 Python
pip 20.3 新版本发布!即将抛弃 Python 2.x(推荐)
2020/12/16 Python
Pycharm 如何一键加引号的方法步骤
2021/02/05 Python
门卫岗位安全职责
2013/12/13 职场文书
环境卫生工作汇报材料
2014/10/28 职场文书
2014年煤矿工人工作总结
2014/12/08 职场文书
优秀少先队员事迹材料
2014/12/24 职场文书
婚礼父母答谢词
2015/01/04 职场文书
旷工辞退通知书
2015/04/17 职场文书
党支部综合考察意见
2015/06/01 职场文书
日本读研:怎样写好一篇日本研究计划书?
2019/07/15 职场文书
Python自动化测试PO模型封装过程详解
2021/06/22 Python
Mysql8.0递归查询的简单用法示例
2021/08/04 MySQL