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 相关文章推荐
jquery 模式对话框终极版实现代码
Sep 28 Javascript
js实现touch移动触屏滑动事件
Apr 17 Javascript
老生常谈javascript的类型转换
Oct 12 Javascript
快速实现JS图片懒加载(可视区域加载)示例代码
Jan 04 Javascript
AngularJS折叠菜单实现方法示例
May 18 Javascript
Angular ng-animate和ng-cookies用法详解
Apr 18 Javascript
vue移动端轻量级的轮播组件实现代码
Jul 12 Javascript
vue 权限认证token的实现方法
Jul 17 Javascript
原生JS forEach()和map()遍历的区别、兼容写法及jQuery $.each、$.map遍历操作
Feb 27 jQuery
详解微信小程序支付流程与梳理
Jul 16 Javascript
微信小程序在text文本实现多种字体样式
Nov 08 Javascript
js实现带搜索功能的下拉框
Jan 11 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
实现PHP框架系列文章(6)mysql数据库方法
2016/03/04 PHP
PHP 返回数组后处理方法(开户成功后弹窗提示)
2017/07/03 PHP
代码生成器 document.write()
2007/04/15 Javascript
js动态给table添加/删除tr的方法
2013/08/02 Javascript
基于Jquery实现键盘按键监听
2014/05/11 Javascript
JavaScript中常用的六种互动方法示例
2015/03/13 Javascript
详解jQuery简单的表格应用
2016/12/16 Javascript
javascript十六进制数字和ASCII字符之间的转换方法
2016/12/27 Javascript
JS中from 表单序列化提交的代码
2017/01/20 Javascript
使用jQuery的load方法设计动态加载及解决被加载页面js失效问题
2017/03/01 Javascript
Angular中$state.go页面跳转并传递参数的方法
2017/05/09 Javascript
手把手搭建安装基于windows的Vue.js运行环境
2017/06/12 Javascript
Angular.js项目中使用gulp实现自动化构建以及压缩打包详解
2017/07/19 Javascript
JS设计模式之访问者模式定义与用法分析
2018/02/05 Javascript
Vue使用mixins实现压缩图片代码
2018/03/14 Javascript
webpack4.0 入门实践教程
2018/10/08 Javascript
js实现黑白div块画空心的图形
2018/12/13 Javascript
jQuery实现验证用户登录
2019/12/10 jQuery
使用vant的地域控件追加全部选项
2020/11/03 Javascript
[54:17]DOTA2-DPC中国联赛定级赛 RNG vs iG BO3第二场 1月10日
2021/03/11 DOTA
Python3正则匹配re.split,re.finditer及re.findall函数用法详解
2018/06/11 Python
python使用PyQt5的简单方法
2019/02/27 Python
Python 操作mysql数据库查询之fetchone(), fetchmany(), fetchall()用法示例
2019/10/17 Python
Python 文件数据读写的具体实现
2020/01/24 Python
Django表单提交后实现获取相同name的不同value值
2020/05/14 Python
Python如何爬取qq音乐歌词到本地
2020/06/01 Python
Python使用tkinter制作在线翻译软件
2021/02/22 Python
哥伦比亚加拿大官网:Columbia Sportswear Canada
2020/09/07 全球购物
伊莱克斯(Electrolux)俄罗斯网上商店:瑞典家用电器品牌
2021/01/23 全球购物
非功能性需求都包括哪些方面
2013/10/29 面试题
面试后的感谢信范文
2014/02/01 职场文书
大学生个人实习的自我评价
2014/02/15 职场文书
个人评语大全
2014/05/04 职场文书
专题组织生活会方案
2014/06/15 职场文书
党员批评与自我批评发言
2014/10/02 职场文书
2015试用期转正工作总结
2014/12/12 职场文书