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脚本的性能的几个注意事项
Dec 22 Javascript
ExtJS下grid的一些属性说明
Dec 13 Javascript
JQuery 操作select标签实现代码
May 14 Javascript
jQuery监控文本框事件并作相应处理的方法
Apr 16 Javascript
javascript汉字拼音互转的简单实例
Oct 09 Javascript
JavaScript简单生成 N~M 之间随机数的方法
Jan 13 Javascript
JavaScript之DOM插入更新删除_动力节点Java学院整理
Jul 03 Javascript
使用Node.js搭建静态资源服务详细教程
Aug 02 Javascript
vue router仿天猫底部导航栏功能
Oct 18 Javascript
谈谈React中的Render Props模式
Dec 06 Javascript
在vue中高德地图引入和轨迹的绘制的实现
Oct 11 Javascript
vue 解决移动端弹出键盘导致页面fixed布局错乱的问题
Nov 06 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
ThinkPHP空模块和空操作详解
2014/06/30 PHP
ThinkPHP中公共函数路径和配置项路径的映射分析
2014/11/22 PHP
php使用curl简单抓取远程url的方法
2015/03/13 PHP
PHP环境搭建的详细步骤
2016/06/30 PHP
Laravel 5.4重新登录实现跳转到登录前页面的原理和方法
2017/07/13 PHP
php使用filter_var函数判断邮箱,url,ip格式示例
2019/07/06 PHP
filemanage功能中用到的lib.js
2007/04/08 Javascript
判断目标是否是window,document,和拥有tagName的Element的代码
2010/05/31 Javascript
放弃用你的InnerHTML来输出HTML吧 jQuery Tmpl不详细讲解
2013/04/20 Javascript
javascript Slip.js实现整屏滑动的手机网页
2015/11/25 Javascript
JavaScript编码风格指南(中文版)
2016/08/26 Javascript
vue.js如何将echarts封装为组件一键使用详解
2017/10/10 Javascript
详解使用React全家桶搭建一个后台管理系统
2017/11/04 Javascript
基于JS实现前端压缩上传图片的实例代码
2019/05/14 Javascript
ES6 十大特性简介
2020/12/09 Javascript
iview实现动态表单和自定义验证时间段重叠
2021/01/10 Javascript
Pyhton中防止SQL注入的方法
2015/02/05 Python
Python里字典的基本用法(包括嵌套字典)
2019/02/27 Python
使用Python画股票的K线图的方法步骤
2019/06/28 Python
python实现在多维数组中挑选符合条件的全部元素
2019/11/26 Python
python实现按关键字筛选日志文件
2019/12/24 Python
Python-numpy实现灰度图像的分块和合并方式
2020/01/09 Python
pytorch 状态字典:state_dict使用详解
2020/01/17 Python
Django接收照片储存文件的实例代码
2020/03/07 Python
HTML5 常见面试题之PC端和移动端区别介绍
2018/01/22 HTML / CSS
英国殿堂级有机护肤品牌:Rodial
2017/04/17 全球购物
东南亚旅游平台:The Trip Guru
2018/01/01 全球购物
广告设计专业自荐信范文
2013/11/14 职场文书
幼儿园教学随笔感言
2014/02/23 职场文书
公司董事长助理工作职责
2014/07/12 职场文书
中学教师暑期培训方案
2014/08/27 职场文书
教书育人演讲稿
2014/09/11 职场文书
2015年图书馆个人工作总结
2015/05/26 职场文书
2015年秋季学校开学标语
2015/07/16 职场文书
vue组件冲突之引用另一个组件出现组件不显示的问题
2022/04/13 Vue.js
配置nginx负载均衡
2022/05/06 Servers