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高级程序设计 事件学习笔记
Sep 10 Javascript
Notify - 基于jquery的消息通知插件
Oct 18 Javascript
JavaScript子类用Object.getPrototypeOf去调用父类方法解析
Dec 05 Javascript
js与jquery获取父元素,删除子元素的两种不同方法
Jan 09 Javascript
Bootstrap编写一个兼容主流浏览器的受众门户式风格页面
Jul 01 Javascript
JavaScript制作简单分页插件
Sep 11 Javascript
js 判断数据类型的几种方法
Jan 13 Javascript
vue.js中$set与数组更新方法
Mar 08 Javascript
微信小程序wx:for和wx:for-item的用法详解
Apr 01 Javascript
JavaScript求一个数组中重复出现次数最多的元素及其下标位置示例
Jul 23 Javascript
微信小程序自定义导航栏
Dec 31 Javascript
详解TypeScript中的类型保护
Apr 29 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
phpMyAdmin下载、安装和使用入门教程
2007/05/31 PHP
用PHP为SHOPEX增加日志功能代码
2010/07/02 PHP
php实现cookie加密的方法
2015/03/10 PHP
Laravel 5.5 的自定义验证对象/类示例代码详解
2017/08/29 PHP
javascript与webservice的通信实现代码
2010/12/25 Javascript
30个精美的jQuery幻灯片效果插件和教程
2011/08/23 Javascript
用jQuery中的ajax分页实现代码
2011/09/20 Javascript
深入探讨前端框架react
2015/12/09 Javascript
jQuery mobile 移动web(4)
2015/12/20 Javascript
JS hashMap实例详解
2016/05/26 Javascript
JavaScript 闭包详细介绍
2016/09/28 Javascript
详解EasyUi控件中的Datagrid
2017/08/23 Javascript
nodejs 十六进制字符串型数据与btye型数据相互转换
2018/07/30 NodeJs
Vue.js自定义指令学习使用详解
2019/10/19 Javascript
[47:46]完美世界DOTA2联赛 Magma vs GXR 第三场 11.07
2020/11/10 DOTA
Python的MongoDB模块PyMongo操作方法集锦
2016/01/05 Python
Python简单连接MongoDB数据库的方法
2016/03/15 Python
selenium+python 去除启动的黑色cmd窗口方法
2018/05/22 Python
python分批定量读取文件内容,输出到不同文件中的方法
2018/12/08 Python
python读写csv文件并增加行列的实例代码
2019/08/01 Python
Python递归实现打印多重列表代码
2020/02/27 Python
Python使用pycharm导入pymysql教程
2020/09/16 Python
浅析python实现动态规划背包问题
2020/12/31 Python
Python实现淘宝秒杀功能的示例代码
2021/01/19 Python
浅析canvas元素的html尺寸和css尺寸对元素视觉的影响
2019/07/22 HTML / CSS
全球知名的婚恋交友网站:Match.com
2017/01/05 全球购物
moosejaw旗下的户外商品促销网站:Mountain Steals
2017/02/27 全球购物
英国IT硬件供应商,定制游戏PC:Mesh Computers
2019/03/28 全球购物
酒店执行总经理岗位职责
2013/12/15 职场文书
小学英语教学反思
2014/01/30 职场文书
母婴店促销方案
2014/03/05 职场文书
项目施工员岗位职责
2014/03/09 职场文书
超市开业庆典策划方案
2014/05/14 职场文书
学校火灾防控方案
2014/06/09 职场文书
学校元旦晚会开场白
2015/05/29 职场文书
2016暑期师德培训心得体会
2016/01/09 职场文书