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提交表单 Form.js官方插件介绍
Mar 01 Javascript
jquery实现盒子下拉效果示例代码
Sep 12 Javascript
jQuery实现当按下回车键时绑定点击事件
Jan 28 Javascript
详解AngularJS的通信机制
Jun 18 Javascript
jQuery蓝色风格滑动导航栏代码分享
Aug 19 Javascript
JQuery+EasyUI轻松实现步骤条效果
Feb 22 Javascript
JS命令模式例子之菜单程序
Oct 10 Javascript
JavaScript中Hoisting详解 (变量提升与函数声明提升)
Aug 18 Javascript
JS实现的简单拖拽购物车功能示例【附源码下载】
Jan 03 Javascript
Node.js使用MySQL连接池的方法实例
Feb 11 Javascript
vue中利用simplemde实现markdown编辑器(增加图片上传功能)
Apr 29 Javascript
微信小程序 select 下拉框组件功能
Sep 09 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
解决dede生成静态页和动态页转换的一些问题,及火车采集入库生成动态的办法
2007/03/29 PHP
php输出xml格式字符串(用的这个)
2012/07/12 PHP
教你如何用php实现LOL数据远程获取
2014/06/10 PHP
php+javascript实现的动态显示服务器运行程序进度条功能示例
2017/08/07 PHP
自己动手制作jquery插件之自动添加删除行的实现
2011/10/13 Javascript
JS实现在状态栏显示打字效果完整实例
2015/11/02 Javascript
javascript jquery对form元素的常见操作详解
2016/06/12 Javascript
javascript事件冒泡简单示例
2016/06/20 Javascript
jQuery插件DataTable使用方法详解(.Net平台)
2016/12/22 Javascript
Angular实现跨域(搜索框的下拉列表)
2017/02/16 Javascript
vue mixins组件复用的几种方式(小结)
2017/09/06 Javascript
vue.js使用watch监听路由变化的方法
2018/07/08 Javascript
NVM安装nodejs的方法实用步骤
2019/01/16 NodeJs
微信小程序swiper左右扩展各显示一半代码实例
2019/12/05 Javascript
node.JS的crypto加密模块使用方法详解(MD5,AES,Hmac,Diffie-Hellman加密)
2020/02/06 Javascript
vue使用自定义事件的表单输入组件用法详解【日期组件与货币组件】
2020/06/01 Javascript
重命名批处理python脚本
2013/04/05 Python
Python的迭代器和生成器
2015/07/29 Python
Python使用gensim计算文档相似性
2016/04/10 Python
python+pyqt实现右下角弹出框
2017/10/26 Python
在PYQT5中QscrollArea(滚动条)的使用方法
2019/06/14 Python
解决Python3 抓取微信账单信息问题
2019/07/19 Python
python英语单词测试小程序代码实例
2019/09/09 Python
python 制作python包,封装成可用模块教程
2020/07/13 Python
python+appium+yaml移动端自动化测试框架实现详解
2020/11/24 Python
使用canvas对多图片拼合并导出图片的方法
2018/08/28 HTML / CSS
兰芝美国网上商城:购买LANEIGE睡眠面膜等
2017/06/30 全球购物
Structs界面控制层技术
2013/10/11 面试题
电气工程及其自动化学生实习自我鉴定
2013/09/19 职场文书
上课说话检讨书大全
2014/01/22 职场文书
假释思想汇报范文
2014/10/11 职场文书
答谢词范文
2015/01/05 职场文书
2015年会计人员工作总结
2015/05/22 职场文书
2016年党员承诺书范文
2016/03/24 职场文书
2019职场单身人才调研报告:互联网行业单身比例最高
2019/08/07 职场文书
css position fixed 左右双定位的实现代码
2021/04/29 HTML / CSS