vue 2 滚动条加载更多数据实现
解析:
判断滚动条到底部,需要用到DOM的三个属性值,即scrollTop、clientHeight、scrollHeight。
scrollTop为滚动条在Y轴上的滚动距离。
clientHeight为内容可视区域的高度。
scrollHeight为内容可视区域的高度加上溢出(滚动)的距离。
从这个三个属性的介绍就可以看出来,滚动条到底部的条件即为scrollTop + clientHeight == scrollHeight。(兼容不同的浏览器)。
代码:
1.vue的实现
html:
<div class="questionList-content-list">
<ul>
<li v-for="item in questionListData" @click="goDetail(item.id)">
<span>{{item.create_time}}</span>
<span :class="'level_' + item.level">[{{item.level_value}}]</span>
<span title="item.description">{{item.description}}</span>
<span :class="'status_' + item.status ">{{item.status_value}}</span>
</li>
</ul>
</div>
js:
created () {
var self = this
$(window).scroll(function () {
let scrollTop = $(this).scrollTop()
let scrollHeight = $(document).height()
let windowHeight = $(this).height()
if (scrollTop + windowHeight === scrollHeight) {
self.questionListData.push({
'id': '62564AED8A4FA7CCDBFBD0F9A11C97A8',
'type': '0102',
'type_value': '数据问题',
'description': '撒的划分空间撒电话费看见爱上对方见客户速度快解放哈萨克接电话发生的划分空间是的哈副科级哈师大空间划分可接受的后方可抠脚大汉房间卡收到货放假多少',
'status': '0',
'status_value': '未解决',
'level': '0203',
'level_value': '高',
'content': '过好几个号',
'userid': 'lxzx_hdsx',
'create_time': 1480296174000,
'images': null
})
self.questionListData.push({
'id': 'D679611152737E675984D7681BC94F16',
'type': '0101',
'type_value': '需求问题',
'description': 'a阿斯顿发生丰盛的范德萨范德萨发十多个非官方阿道夫葛根粉v跟下载v',
'status': '0',
'status_value': '未解决',
'level': '0203',
'level_value': '高',
'content': '秩序性支出V型从v',
'userid': 'lxzx_hdsx',
'create_time': 1480296155000,
'images': null
})
self.questionListData.push({
'id': 'B5C61D990F962570C34B8EE607CA1384',
'type': '0104',
'type_value': '页面问题',
'description': '回复的文本框和字体有点丑',
'status': '0',
'status_value': '未解决',
'level': '0203',
'level_value': '高',
'content': '回复的文本框和字体有点丑',
'userid': 'lxzx_hdsx',
'create_time': 1480064620000,
'images': null
})
self.questionListData.push({
'id': '279F9571CB8DC36F1DEA5C8773F1793C',
'type': '0103',
'type_value': '设计问题',
'description': '设计bug,不应该这样设计。',
'status': '0',
'status_value': '未解决',
'level': '0204',
'level_value': '非常高',
'content': '设计bug,不应该这样设计。你看。',
'userid': 'lxzx_hdsx',
'create_time': 1480064114000,
'images': null
})
self.questionListData.push({
'id': '80E365710CB9157DB24F08C8D2039473',
'type': '0102',
'type_value': '数据问题',
'description': '数据列表滚动条问题',
'status': '0',
'status_value': '未解决',
'level': '0202',
'level_value': '中',
'content': '数据列表在数据条数比较多的情况下无滚动条',
'userid': 'lxzx_hdsx',
'create_time': 1480034606000,
'images': null
})
console.log(self.questionListData)
}
})
},
因为vue2 实现了m-v双向绑定,所以这里直接改变for循环数据源即可实现列表的数据刷新; 2: 普通js的实现
html:
<div id="content" style="height:960px" class="questionList-content-list">
<ul>
<li class="list">
<span>测试1</span>
<span>测试2</span>
<span>测试3</span>
<span>测试4</span>
<span>测试5</span>
<span>测试6</span>
<span>测试7</span>
<span>测试8</span>
<span>测试9</span>
<span>测试10</span>
<span>测试11</span>
</li>
</ul>
</div>
js:
var html = '' //距下边界长度/单位px
$(window).scroll(function () {
var scrollTop = $(this).scrollTop();
var scrollHeight = $(document).height();
var windowHeight = $(this).height();
if (scrollTop + windowHeight == scrollHeight) {
for(let i=0;i<10;i++){
html += '<li>Page: ' + i + ', Data Index: ' + i + ' </li>'
}
$('#content ul').append(html);
}
});
vue 2 滚动条加载更多数据实现的更多相关文章
- Vue.js中滚动条加载更多数据
本文章参考:http://www.cnblogs.com/ssrsblogs/p/6108423.html 分析:1.需要判断滚动条是否到底部: 需要用到DOM的三个属性值,即scrollTop.cl ...
- 关于Vue中页面(父组件)下拉,页面中的子组件加载更多数据的实现方法
一个项目中存在很多这种情况:父组件(页面)中的子组件需要做下拉加载更多的需求,但是这个下拉到底部的动作只能通过监控页面(父组件)来完成 这就需要父子组件之间的通信,代码如下: 1. 建立一个用于父子组 ...
- js防抖和节流优化浏览器滚动条滚动到最下面时加载更多数据
防抖和节流,主要是用来防止过于平凡的执行某个操作,如浏览器窗口变化执行某个操作,监听某个input输入框keyup变化,瀑布流布局时Y轴滚动,图片加载. js函数的防抖 经过一段事件才执行某个操作,如 ...
- 笔记-VUE滚动加载更多数据
来源:https://blog.csdn.net/qq_17281881/article/details/87342403 VUE滚动加载更多数据 data() { return { loading: ...
- 基于zepto的H5/移动端tab切换触摸拖动加载更多数据
以前实现移动端的滑动加载更多实现的方法是当滚动条快到页面底部时就自动加载更多的数据,在这方面很多人都用的是"西门的后花园"写的一个叫dropload的插件,这个插件用起来也很好,很 ...
- ASP.NET仿新浪微博下拉加载更多数据瀑布流效果
闲来无事,琢磨着写点东西.貌似页面下拉加载数据,瀑布流的效果很火,各个网站都能见到各式各样的展示效果,原理大同小异.于是乎,决定自己写一写这个效果,希望能给比我还菜的菜鸟们一点参考价值. 在开始之前, ...
- ajax点击加载更多数据图片(预加载)
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...
- vue10行代码实现上拉翻页加载更多数据,纯手写js实现下拉刷新上拉翻页不引用任何第三方插件
vue10行代码实现上拉翻页加载更多数据,纯手写js实现下拉刷新上拉翻页不引用任何第三方插件/库 一提到移动端的下拉刷新上拉翻页,你可能就会想到iScroll插件,没错iScroll是一个高性能,资源 ...
- iOS:详解MJRefresh刷新加载更多数据的第三方库
原文链接:http://www.ios122.com/2015/08/mjrefresh/ 简介 MJRefresh这个第三方库是李明杰老师的杰作,这个框架帮助我们程序员减轻了超级多的麻烦,节约了开发 ...
随机推荐
- Java基础常见英语词汇
Java基础常见英语词汇(共70个) ['ɔbdʒekt] ['ɔ:rientid]导向的 ['prəʊɡræmɪŋ]编程 OO: object ...
- firefox浏览器不支持复制粘贴(linux)
在Linux主机下使用firefox在线编辑文章时,提示不支持复制粘贴选项,并给出了解决方法,记录一下 1.先找到本机firefox的配置文件的所在文件夹位置,不知道的请遵循以下步骤 点击菜单栏的帮助 ...
- highchart访问一次后台服务返回多张图表数据
本文承接上一篇,我们制作动态图表的时候,往往需要的不止一张图表,如果每张图表都与服务接口做一次交互的话未免太过频繁,这无论对前后还是后台都是一种压力,本文介绍一种一次访问返回多组数据的方式来减少前台与 ...
- NPOI Helper文档
public class ExcelHelper { /// <summary> /// NPOI Excel转DataTable /// </summary> /// < ...
- 复制SharePoint列表项(SPListItem)到另一个列表
从理论上讲,有一个简单到难以置信的解决办法:SPListItem提供了一个CopyTo(destinationUrl)方法(可参考MSDN).不幸的是,这个方法似乎用不了.至少对我的情况(一个带附件的 ...
- angular中ng-model,返回数据,拆分数据,展示,名称相同,重新赋值会有冲突
本问题出在angular,1.X版本,我用的是1.5的版本: 问题原因: <input type="number" ng-mode="a" /> & ...
- iOS 利用for循环创建九宫格
// 利用for循环创建九宫格 - (void)createScratchableLatex{ // 总列数 ; // 每一格的尺寸 CGFloat cellW = (self.frame.size. ...
- Ajax1
一.Ajax是什么? 全称"Asynchronous JavaScript and XML"(异步JavaScript和XML),是指一种创建交互式网页应用的网页开发技术. AJA ...
- C语言 断言 总结
转载: http://wenda.so.com/q/1378817559065638?src=140 assert宏的原型定义在<assert.h>中,其作用是如果它的条件返回错误,则终止 ...
- 使用dd命令克隆整个系统(转)
神奇的ghost的原理是什么呢?不就是数据复制吗?Linux下的dd命令不就是最强大的数据复制工具! 既然如此,我为什么要使用g4l这样复杂的工具呢?一条dd命令不就可以帮我实现任意 ...