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 相关文章推荐
javascript 数组的方法集合
Jun 05 Javascript
一个奇葩的最短的 IE 版本判断JS脚本
May 28 Javascript
一行命令搞定node.js 版本升级
Jul 20 Javascript
JavaScript中的索引数组、关联数组和静态数组、动态数组讲解
Nov 08 Javascript
剖析Node.js异步编程中的回调与代码设计模式
Feb 16 Javascript
js捕捉键盘事件和按键键值的方法
Oct 10 Javascript
AngularJs表单验证实例代码解析
Nov 29 Javascript
jQuery事件详解
Feb 23 Javascript
JS实现移动端整屏滑动的实例代码
Nov 10 Javascript
Vue.js devtool插件安装后无法使用的解决办法
Nov 27 Javascript
Javascript三种字符串连接方式及性能比较
May 28 Javascript
Vue 实现登录界面验证码功能
Jan 03 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内置访问资源的超时时间 time_out file_get_contents read_file
2013/06/03 PHP
PHP入门教程之上传文件实例详解
2016/09/11 PHP
JavaScript脚本性能优化注意事项
2008/11/18 Javascript
不用写JS也能使用EXTJS视频演示
2008/12/29 Javascript
jquery ajax 同步异步的执行示例代码
2010/06/23 Javascript
jquery制作搜狐快站页面效果示例分享
2014/02/21 Javascript
jQuery实现文件上传进度条特效
2015/08/12 Javascript
js密码强度检测
2016/01/07 Javascript
javascript中sort排序实例详解
2016/07/24 Javascript
nodejs接入阿里大鱼短信验证码的方法
2017/07/10 NodeJs
简单明了区分escape、encodeURI和encodeURIComponent
2018/05/26 Javascript
vue+axios+promise实际开发用法详解
2018/10/15 Javascript
优雅地使用loading(推荐)
2019/04/20 Javascript
深入理解Antd-Select组件的用法
2020/02/25 Javascript
vue 自定义组件的写法与用法详解
2020/03/04 Javascript
Vue-CLI 3 scp2自动部署项目至服务器的方法
2020/07/24 Javascript
vue项目中js-cookie的使用存储token操作
2020/11/13 Javascript
[10:28]2018DOTA2国际邀请赛寻真——VGJ.S寻梦之路
2018/08/15 DOTA
Python中编写ORM框架的入门指引
2015/04/29 Python
Python删除windows垃圾文件的方法
2015/07/14 Python
Python3中bytes类型转换为str类型
2018/09/27 Python
Python 串口读写的实现方法
2019/06/12 Python
解决python中使用PYQT时中文乱码问题
2019/06/17 Python
django框架单表操作之增删改实例分析
2019/12/16 Python
jupyter notebook更换皮肤主题的实现
2021/01/07 Python
python源文件的字符编码知识点详解
2021/03/04 Python
CSS3实现滚动条动画效果代码分享
2016/08/03 HTML / CSS
小程序canvas中文字设置居中锚点
2019/04/16 HTML / CSS
尼克松手表官网:Nixon手表
2019/03/17 全球购物
网站域名和主机:Domain.com
2019/04/01 全球购物
娇韵诗俄罗斯官方网站:Clarins俄罗斯
2020/10/03 全球购物
绿色环保家庭事迹材料
2014/08/31 职场文书
2014机关党员干部“正风肃纪”思想汇报
2014/09/15 职场文书
警察群众路线对照检查材料思想汇报
2014/10/01 职场文书
班主任自我评价范文
2015/03/11 职场文书
修改并编译golang源码的操作步骤
2021/07/25 Golang