解析:

  判断滚动条到底部,需要用到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 滚动条加载更多数据实现的更多相关文章

  1. Vue.js中滚动条加载更多数据

    本文章参考:http://www.cnblogs.com/ssrsblogs/p/6108423.html 分析:1.需要判断滚动条是否到底部: 需要用到DOM的三个属性值,即scrollTop.cl ...

  2. 关于Vue中页面(父组件)下拉,页面中的子组件加载更多数据的实现方法

    一个项目中存在很多这种情况:父组件(页面)中的子组件需要做下拉加载更多的需求,但是这个下拉到底部的动作只能通过监控页面(父组件)来完成 这就需要父子组件之间的通信,代码如下: 1. 建立一个用于父子组 ...

  3. js防抖和节流优化浏览器滚动条滚动到最下面时加载更多数据

    防抖和节流,主要是用来防止过于平凡的执行某个操作,如浏览器窗口变化执行某个操作,监听某个input输入框keyup变化,瀑布流布局时Y轴滚动,图片加载. js函数的防抖 经过一段事件才执行某个操作,如 ...

  4. 笔记-VUE滚动加载更多数据

    来源:https://blog.csdn.net/qq_17281881/article/details/87342403 VUE滚动加载更多数据 data() { return { loading: ...

  5. 基于zepto的H5/移动端tab切换触摸拖动加载更多数据

    以前实现移动端的滑动加载更多实现的方法是当滚动条快到页面底部时就自动加载更多的数据,在这方面很多人都用的是"西门的后花园"写的一个叫dropload的插件,这个插件用起来也很好,很 ...

  6. ASP.NET仿新浪微博下拉加载更多数据瀑布流效果

    闲来无事,琢磨着写点东西.貌似页面下拉加载数据,瀑布流的效果很火,各个网站都能见到各式各样的展示效果,原理大同小异.于是乎,决定自己写一写这个效果,希望能给比我还菜的菜鸟们一点参考价值. 在开始之前, ...

  7. ajax点击加载更多数据图片(预加载)

    <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...

  8. vue10行代码实现上拉翻页加载更多数据,纯手写js实现下拉刷新上拉翻页不引用任何第三方插件

    vue10行代码实现上拉翻页加载更多数据,纯手写js实现下拉刷新上拉翻页不引用任何第三方插件/库 一提到移动端的下拉刷新上拉翻页,你可能就会想到iScroll插件,没错iScroll是一个高性能,资源 ...

  9. iOS:详解MJRefresh刷新加载更多数据的第三方库

    原文链接:http://www.ios122.com/2015/08/mjrefresh/ 简介 MJRefresh这个第三方库是李明杰老师的杰作,这个框架帮助我们程序员减轻了超级多的麻烦,节约了开发 ...

随机推荐

  1. CSS基础01

    1.line-height:设置每行的高度,默认是会以文字的高度来决定 2.text-align:设置文本的对齐方式 3.vertical-align: sub 垂直对齐文本的下标. super 垂直 ...

  2. PHP form 表单传参明细研究

    GET表单: 复制代码代码如下: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "h ...

  3. python之路-Day3

    字典 dic{key:value} 元组与列表相似,唯一就是不能修改dic = {'name':'alex','age':18}查询print(dic['name']) #会报错get方法查询,查询之 ...

  4. linux无线配置

    1. 找 wifi 热点 sudo iwlist scan 2. 生成热点的配置(wpa2加密) sudo wpa_passphrase "wifi热点名称" "wpa密 ...

  5. Altium Designer PCB双面板制作打印操作步骤

    Altium Designer PCB双面板制作打印操作步骤百度知道:http://jingyan.baidu.com/article/335530da83441c19cb41c3db.html?st ...

  6. python Day01

    Python Day01 Python 简介 介绍 Python 是一种面向对象.直译式的计算机程序设计语言,也是一种功能强大的通用型语言,已经有将近二十年的发展历史,成熟稳定.包含了一组完善而且容易 ...

  7. 手动安装m4, autoconf, automake, libtool

    转自http://ruby-china.org/topics/2434 系列文章原载于自己的博客,TOPI.CO (http://topi.co) ,某天不小心就push错啦,懒得从头再来,上传到Ru ...

  8. 为什么重写equals时必须重写hashCode方法?

    原文地址:http://www.cnblogs.com/shenliang123/archive/2012/04/16/2452206.html 首先我们先来看下String类的源码:可以发现Stri ...

  9. Python SQLAlchemy --3

    本文為 Python SQLAlchemy ORM 一系列教學文: 刪除 學會如何查詢之後,就能夠進行後續的刪除.更新等操作. 同樣地,以幾個範例做為學習的捷徑. 123456789 user_1 = ...

  10. 测试webAPP时图标背景一片黑色

    写了个web小程序,打包成APP后安装到手机里,在魅族手机里显示是正常的,但是在EMUI和MIUI中却显示一片黑色,搞了半天才发现原来是因为EMUI会自动给应用的图标裁剪圆角并加上背景色,背景色是系统 ...