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 checkbox全选、取消全选实现代码
Mar 05 Javascript
Jquery判断IE6等浏览器的代码
Apr 05 Javascript
探讨:JavaScript ECAMScript5 新特性之get/set访问器
May 05 Javascript
jquery设置表单元素为不可用的简单代码
Jul 04 Javascript
使用BootStrap实现用户登录界面UI
Aug 10 Javascript
ES6通过babel转码使用webpack使用import关键字
Dec 13 Javascript
Javascript中字符串和数字的操作方法整理
Jan 22 Javascript
Angularjs的$http异步删除数据详解及实例
Jul 27 Javascript
vue 1.0 结合animate.css定义动画效果
Jul 11 Javascript
微信小程序支付PHP代码
Aug 23 Javascript
微信小程序实现滑动操作代码
Apr 23 Javascript
JS数组reduce()方法原理及使用技巧解析
Jul 14 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
PHP4(windows版本)中的COM函数
2006/10/09 PHP
php多文件上传功能实现原理及代码
2013/04/18 PHP
PHP中如何使用session实现保存用户登录信息
2015/10/20 PHP
js点击更换背景颜色或图片的实例代码
2013/06/25 Javascript
代码获取历史上的今天发生的事
2014/04/11 Javascript
JQuery调用绑定click事件的3种写法
2015/03/28 Javascript
jquery实现隐藏在左侧的弹性弹出菜单效果
2015/09/18 Javascript
JavaScript数据推送Comet技术详解
2016/04/07 Javascript
jQuery web 组件 后台日历价格、库存设置的代码
2016/10/14 Javascript
VUE JS 使用组件实现双向绑定的示例代码
2017/01/10 Javascript
vue模板语法-插值详解
2017/03/06 Javascript
bootstrap常用组件之头部导航实现代码
2017/04/20 Javascript
通过jQuery学习js类型判断的技巧
2019/05/27 jQuery
JS使用cookie保存用户登录信息操作示例
2019/05/30 Javascript
JQuery表单元素取值赋值方法总结
2020/05/12 jQuery
element-ui中dialog弹窗关闭按钮失效的解决
2020/09/22 Javascript
Python实现Linux下守护进程的编写方法
2014/08/22 Python
浅谈Python类的__getitem__和__setitem__特殊方法
2016/12/25 Python
Python常见数据结构之栈与队列用法示例
2019/01/14 Python
python2.7使用plotly绘制本地散点图和折线图
2019/04/02 Python
详解Python 4.0 预计推出的新功能
2019/07/26 Python
python中@property和property函数常见使用方法示例
2019/10/21 Python
Python Numpy 自然数填充数组的实现
2019/11/28 Python
Ubuntu中配置TensorFlow使用环境的方法
2020/04/21 Python
在Python中字典按值排序的实现方法
2020/11/12 Python
三只松鼠官方旗舰店:全网坚果销售第1
2017/11/25 全球购物
德国前卫设计师时装在线商店:Luxury Loft
2019/11/04 全球购物
西班牙用户之间买卖视频游戏的平台:Wakkap
2020/03/21 全球购物
物流管理专业大学生自荐信
2013/10/04 职场文书
同学会邀请书大全
2014/01/12 职场文书
试用期转正鉴定评语
2014/01/27 职场文书
法制宣传月活动总结
2014/04/29 职场文书
课外科技活动总结
2014/08/27 职场文书
大学生学习面向未来的赶考思想汇报
2014/09/12 职场文书
入党介绍人意见范文
2015/06/01 职场文书
五年级语文教学反思
2016/03/03 职场文书