vue项目上滑滚动加载更多&下拉刷新
上滑滚动时获取内容高度、屏幕高度和滚动高度(此处#sslist要为内容是id)
内容高度 let innerHeight = document.querySelector("#sslist").clientHeight;
屏幕高度 let outerHeight = document.documentElement.clientHeight;
滚动高度 let scrollTop = document.documentElement.scrollTop || document.body.scrollTop || window.pageYOffset;
代码:
<template>
<div id="sslist">
<div class="readlist main">
<div class="read">
<h4 class="regulartitle"><i>S-SENTENCE - {{readcount}}</i><router-link to="/ssadd">addsentence</router-link></h4>
<ul class="booklist">
<li v-for="(item, index) in readLists">
{{item.content}}
</li>
</ul>
</div>
</div>
<div v-if="has_log == 0">
<span>上拉加载</span>
</div>
<div v-if="has_log == 1">
<span>正在加载</span>
</div>
<div v-if="has_log == 2">
<span>没有更多数据了</span>
</div>
</div>
</template>
<script>
export default{
name: 'sslist',
data(){
return {
readLists: [],
readcount: '',
list_param:{
page: 1,
pageLimit: 20
},
totalpages: 0, //总页数
has_log: 0, //显示提示 0-上拉加载 1-正在加载 2-没有更多数据了
no_data: false //是否还有数据
}
},
mounted(){
this.getList(); window.addEventListener('scroll', this.onScroll);
},
methods: {
onScroll(){
this.has_log = 1;
let innerHeight = document.querySelector("#sslist").clientHeight;
let outerHeight = document.documentElement.clientHeight;
let scrollTop = document.documentElement.scrollTop || document.body.scrollTop || window.pageYOffset; console.log(innerHeight + ' ' + outerHeight + ' ' + scrollTop); if(outerHeight + scrollTop === innerHeight){
if(this.no_data === true){
this.has_log = 2;
return false;
} this.getList(); } if(scrollTop < 0){
this.list_param.page = 1;
this.getList();
}
},
getList(){
var that = this;
this.axios.get("http://127.0.0.1/api/singlesentence/getlist.php",{params:that.list_param}).then((ret)=>{
if(ret.status == 200){
if(that.list_param.page == 1){
that.readLists = ret.data.lists;
}else{
that.readLists = that.readLists.concat(ret.data.lists);
} if(that.list_param.page < ret.data.totalpages){
that.list_param.page += 1;
}else{
that.no_data = true;
} that.readcount = ret.data.count;
that.totalpages = ret.data.totalpages;
}
})
}
}
}
</script>
<style>
</style>
vue项目上滑滚动加载更多&下拉刷新的更多相关文章
- mui的上拉加载更多 下拉刷新 自己封装的demo
----------------------------------------------- 这是一个非常呆萌的程序妹子,深夜码的丑代码------------------------------- ...
- mui实现分页上拉加载更多 下拉刷新数据的简单实现 移动端下拉上拉
空下来把mui上拉加载更多,下拉刷新数据做了一个简单的实现,希望可以帮助到需要的朋友 demo项目的结构 <!DOCTYPE html> <html> <head> ...
- android ListView上拉加载更多 下拉刷新功能实现(采用pull-to-refresh)
Android实现上拉加载更多功能以及下拉刷新功能, 采用了目前比较火的PullToRefresh,他是目前实现比较好的下拉刷新的类库. 目前他支持的控件有:ListView, ExpandableL ...
- vue.js移动端app实战4:上拉加载以及下拉刷新
上拉加载以及下拉刷新都是移动端很常见的功能,在搜索或者一些分类列表页面常常会用到. 跟横向滚动一样,我们还是采用better-scroll这个库来实现.由于better已经更新了新的版本,之前是0.几 ...
- 你必须了解的RecyclerView的五大开源项目-解决上拉加载、下拉刷新和添加Header、Footer等问题
前段时间做项目由于采用的MD设计,所以必须要使用RecyclerView全面代替ListView.但是开发中遇到了需要实现RecyclerView上拉加载.下拉刷新和添加Header以及Footer等 ...
- vue使用vant-ui实现上拉加载、下拉刷新和返回顶部
vue使用vant-ui实现上拉加载.下拉刷新和返回顶部 vue现在在移动端常用的ui库有vant-ui和mint-ui,上拉加载.下拉刷新和返回顶部也是移动端最基础最常见的功能.下面就用vant-u ...
- vue-scroller实现vue单页面的上拉加载和下拉刷新问题
在vue中如何简单的实现页面的上拉加载和下拉刷新,在这里我推荐使用vue-scrolle插件. vue-scrolle的基本使用方法: 1.下载 npm i vue-scroller -D 2.导包 ...
- vue项目中上拉加载和下拉刷新页面的实现
功能:上拉加载,下拉刷新 使用方法: 自己创建一个.vue的文件(我自己是创建了一个PullToRefresh.vue的文件),将代码粘贴进去,具体的样式问题自己在该文件中调整. <templa ...
- 使用mescroll实现上拉加载与下拉刷新
现在上拉加载与下拉刷新几乎已经是移动端必备功能之一了,自己实现一个太麻烦,但是好用的插件又非常少.之前看到网上很多人都在用iScroll,于是也尝试用它做了几个DEMO,但或多或少都有一些问题,比如这 ...
随机推荐
- vue 保存数组和对象, 避免双向绑定影响
很多时候需要保存数据然后复用该数据,因vue的双向绑定总是不能保存原始数据 随笔记录解决方式 1. 不要把变量放置在data中 2. 保存至新的变量 object : let obj= Objec ...
- java 使用poi导出Excel,设置单元格保护不可编辑
//sheet表加密:等效excel的审阅菜单下的保护工作表 sheet.protectSheet(new String("333"));//333是密码 更多设置请参考:http ...
- QT UI 线程为什么卡死?
我的工程是由三个线程处理不同任务构成的,其中UI用于显示,还有数据处理和数据接收发送线程. 在运行的过程中发现由于数据处理线程不及时,超过了设定的100ms,导致UI卡死,几个周期后又恢复,接着又卡死 ...
- 【C++】关于map的遍历 删除
int main(int argc, char* argv[]) { map<string, string> mapData; mapData["a"] = " ...
- MacOS利用Terminal访问远程Linux服务器
常用命令 默认22端口访问 ssh x.x.x.x 指定端口访问 ssh x.x.x.x -p port 指定用户访问(默认是MacOS当前用户) ssh user@x.x.x.x [-p port] ...
- poj3294 后缀数组
后缀数组多个字符串问题. 先求出height[]数组,然后二分求最大的长度. 但是条件需要改变.如果出现次数大于一般那就满足.然后就要解决如何判断那一段属于其中一个字符串. 所以先处理出长度.并且不断 ...
- php7 新内容
1.use增强 以thinkphp5.0为例 namespace app\home\controller;use think\{Loader,Controller,Captcha,Request}; ...
- 当async/await碰见forEach-------------爆炸
let p = ['http://img3.imgtn.bdimg.com/it/u=3278834702,2663618759&fm=26&gp=0.jpg', 'http://im ...
- 巨蟒python全栈开发-第11阶段 ansible_project1
今日大纲: 1.前端页面介绍 2.发布流程 3.需求分析 4.表结构设计 5.前端页面设计 昨日内容回顾: 1.roles - tasks - handlers - files - templates ...
- 5G时代-计算机和网络的又一个春天
预言 5G时代的到来计算机和网络即将再次变成热门,计算机和网络的前途将不可限量,就经济学思想来说一定是最具有经济价值的技术,计算机和网络将蓬勃发展,迅速膨胀,经济价值变得极高.将成为科技和智能生活的最 ...