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 相关文章推荐
jQuery EasyUI API 中文文档 - Calendar日历使用
Oct 19 Javascript
无缝滚动改进版支持上下左右滚动(封装成函数)
Dec 04 Javascript
js操作css属性实现div层展开关闭效果的方法
May 11 Javascript
基于jquery实现全屏滚动效果
Nov 26 Javascript
BootStrap中Datetimepicker和uploadify插件应用实例小结
May 26 Javascript
jquery ajax结合thinkphp的getjson实现跨域的方法
Jun 06 Javascript
仿iframe效果Aajx文件上传实例
Nov 18 Javascript
jQuery中库的引用方法
Jan 06 jQuery
vue iview组件表格 render函数的使用方法详解
Mar 15 Javascript
[原创]jquery判断元素内容是否为空的方法
May 04 jQuery
vuejs实现标签选项卡动态更改css样式的方法
May 31 Javascript
微信小程序云开发详细教程
May 16 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
自己动手做一个SQL解释器
2006/10/09 PHP
如何在PHP中使用Oracle数据库(1)
2006/10/09 PHP
php中的时间显示
2007/01/18 PHP
浅析PHP安装扩展mcrypt以及相关依赖项(PHP安装PECL扩展的方法)
2013/07/05 PHP
关于php内存不够用的快速解决方法
2013/10/26 PHP
PHP中构造函数和析构函数解析
2014/10/10 PHP
PHP 生成微信红包代码简单
2016/03/25 PHP
PHP+JQUERY操作JSON实例
2017/03/23 PHP
nodejs win7下安装方法
2012/05/24 NodeJs
JavaScript中的作用域链和闭包
2012/06/30 Javascript
JavaScript中的逻辑判断符&amp;&amp;、||与!介绍
2014/12/31 Javascript
js实现无缝滚动特效
2015/12/20 Javascript
防止Node.js中错误导致进程阻塞的办法
2016/08/11 Javascript
vue.js通过自定义指令实现数据拉取更新的实现方法
2016/10/18 Javascript
详解ECMAScript6入门--Class对象
2017/04/27 Javascript
jQuery实现炫丽的3d旋转星空效果
2018/07/04 jQuery
仿vue-cli搭建属于自己的脚手架的方法步骤
2019/04/17 Javascript
[02:32]DOTA2亚洲邀请赛 C9战队出场宣传片
2015/02/07 DOTA
[02:07]TI9显影之尘系列 - Vici Gaming
2019/08/20 DOTA
python使用beautifulsoup从爱奇艺网抓取视频播放
2014/01/23 Python
9种python web 程序的部署方式小结
2014/06/30 Python
用Python编写分析Python程序性能的工具的教程
2015/04/01 Python
Python的自动化部署模块Fabric的安装及使用指南
2016/01/19 Python
python套接字流重定向实例汇总
2016/03/03 Python
python使用Turtle库绘制动态钟表
2018/11/19 Python
python 获取url中的参数列表实例
2018/12/18 Python
Python开发网站目录扫描器的实现
2019/02/21 Python
Keras—embedding嵌入层的用法详解
2020/06/10 Python
如何利用CSS3制作3D效果文字具体实现样式
2013/05/02 HTML / CSS
Regatta官网:英国最受欢迎的户外服装和鞋类品牌
2019/05/01 全球购物
护理专业毕业生自我鉴定
2013/10/08 职场文书
教学大赛获奖感言
2014/01/15 职场文书
高二学年自我鉴定范文(2篇)
2014/09/26 职场文书
人力资源部岗位职责
2015/02/11 职场文书
历史名人教你十五个读书方法,赶快Get起来!
2019/07/18 职场文书
一文搞懂Redis中String数据类型
2022/04/03 Redis