JavaScript

超轻量级php框架startmvc

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

更新时间:2020-08-28 18:00:01 作者:startmvc
本文实例讲述了vue实现的上拉加载更多数据/分页功能。分享给大家供大家参考,具体如下

本文实例讲述了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程序设计有所帮助。

vue 上拉加载 更多数据 分页