vue2滚动条加载更多数据实现代码


Posted in Javascript onJanuary 10, 2017

解析:

判断滚动条到底部,需要用到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)">
     {{item.create_time}}
     [{{item.level_value}}]
    {{item.description}}
     {{item.status_value}}
    </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);
   }
  });

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
List Installed Software Features
Jun 11 Javascript
使用Jquery搭建最佳用户体验的登录页面之记住密码自动登录功能(含后台代码)
Jul 10 Javascript
jQuery操作input值的各种方法总结
Nov 21 Javascript
JSON中双引号的轮回使用过程中一定要小心
Mar 05 Javascript
js 定义对象数组(结合)多维数组方法
Jul 27 Javascript
javascript中call,apply,bind函数用法示例
Dec 19 Javascript
利用node.js制作命令行工具方法教程(一)
Jun 22 Javascript
浅谈vue项目重构技术要点和总结
Jan 23 Javascript
javacript replace 正则取字符串中的值并替换【推荐】
Sep 13 Javascript
详解在不使用ssr的情况下解决Vue单页面SEO问题
Nov 08 Javascript
小程序最新获取用户昵称和头像的方法总结
Sep 23 Javascript
Webpack设置环境变量的一些误区详解
Dec 19 Javascript
简单实现IONIC购物车功能
Jan 10 #Javascript
微信小程序组件 contact-button(客服会话按钮)详解及实例代码
Jan 10 #Javascript
原生js实现水平方向无缝滚动
Jan 10 #Javascript
vue组件实例解析
Jan 10 #Javascript
bootstrap table分页模板和获取表中的ID方法
Jan 10 #Javascript
React实现点击删除列表中对应项
Jan 10 #Javascript
微信小程序 radio单选框组件详解及实例代码
Jan 10 #Javascript
You might like
php SQL防注入代码集合
2008/04/25 PHP
一个经典的PHP文件上传类分享
2014/11/18 PHP
PHP实现图片上传并压缩
2015/12/22 PHP
PHP+Ajax实现无刷新分页实例详解(附demo源码下载)
2016/04/07 PHP
AJAX的使用方法详解
2017/04/29 PHP
PHP7.1实现的AES与RSA加密操作示例
2018/06/15 PHP
从零开始学习jQuery (六) jquery中的AJAX使用
2011/02/23 Javascript
js精度溢出解决方案
2012/12/02 Javascript
Extjs中通过Tree加载右侧TabPanel具体实现
2013/05/05 Javascript
JavaScript检查数字是否为整数或浮点数的方法
2015/06/09 Javascript
浅析js绑定事件的常用方法
2016/05/15 Javascript
全面总结Javascript对数组对象的各种操作
2017/01/22 Javascript
用JavaScript和jQuery实现瀑布流
2017/03/19 Javascript
JS作用域链详解
2017/06/26 Javascript
javaScript中封装的各种写法示例(推荐)
2017/07/03 Javascript
关于node-bindings无法在Electron中使用的解决办法
2018/12/18 Javascript
VUE接入腾讯验证码功能(滑块验证)备忘
2019/05/07 Javascript
Vue路由权限控制解析
2020/11/09 Javascript
[01:55]2014DOTA2国际邀请赛 BBC正赛第一天总结
2014/07/10 DOTA
python在不同层级目录import模块的方法
2016/01/31 Python
Python读取mat文件,并保存为pickle格式的方法
2018/10/23 Python
对Python通过pypyodbc访问Access数据库的方法详解
2018/10/27 Python
在Python中增加和插入元素的示例
2018/11/01 Python
selenium在执行phantomjs的API并获取执行结果的方法
2018/12/17 Python
CSS3制作炫酷带方向感应的鼠标滑过图片3D动画
2016/03/16 HTML / CSS
canvas实现二维码和图片合成的示例代码
2018/08/01 HTML / CSS
美国知名的在线旅游服务网站:Priceline
2016/07/23 全球购物
美国最大的香水出口:FragranceX.com
2017/11/04 全球购物
加大码胸罩、内裤和服装:Just My Size
2019/03/21 全球购物
教师节促销活动方案
2014/02/14 职场文书
公司经理聘任书
2014/03/29 职场文书
三年级小学生评语
2014/04/22 职场文书
汽车服务工程专业自荐信
2014/09/02 职场文书
2014年幼师工作总结
2014/11/22 职场文书
青岛导游词
2015/02/12 职场文书
感恩教育主题班会
2015/08/12 职场文书