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代码
Aug 13 Javascript
使用GruntJS链接与压缩多个JavaScript文件过程详解
Aug 02 Javascript
深入理解JavaScript是如何实现继承的
Dec 12 Javascript
jQuery插件pagination实现分页特效
Apr 12 Javascript
jQuery中通过ajax的get()函数读取页面的方法
Feb 29 Javascript
JS跨域交互(jQuery+php)之jsonp使用心得
Jul 01 Javascript
js图片轮播手动切换特效
Jan 12 Javascript
Angular指令之restict匹配模式的详解
Jul 27 Javascript
原生JS实现ajax与ajax的跨域请求实例
Dec 01 Javascript
解决vue页面DOM操作不生效的问题
Mar 17 Javascript
Webpack path与publicPath的区别详解
May 03 Javascript
解决angularjs service中依赖注入$scope报错的问题
Oct 02 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报错configure error Cannot find libmysqlclient under usr的解决方法
2014/06/27 PHP
Smarty中调用FCKeditor的方法
2014/10/27 PHP
php保存信息到当前Session的方法
2015/03/16 PHP
PHP获取当前文件的父目录方法汇总
2016/07/21 PHP
laravel学习教程之存取器
2016/07/30 PHP
yii2局部关闭(开启)csrf的验证的实例代码
2017/07/10 PHP
Laravel 实现Eloquent模型分组查询并返回每个分组的数量 groupBy()
2019/10/23 PHP
JavaScript高级程序设计(第3版)学习笔记7 js函数(上)
2012/10/11 Javascript
js解析与序列化json数据(二)序列化探讨
2013/02/01 Javascript
setTimeout和setInterval的深入理解
2013/11/08 Javascript
JavaScript中的slice()方法使用详解
2015/06/06 Javascript
详解jquery easyui之datagrid使用参考
2016/12/05 Javascript
AngularJS基于http请求实现下载php生成的excel文件功能示例
2018/01/23 Javascript
详解KOA2如何手写中间件(装饰器模式)
2018/10/11 Javascript
利用node 判断打开的是文件 还是 文件夹的实例
2019/06/10 Javascript
javascript使用substring实现的展开与收缩文字功能示例
2019/06/17 Javascript
JS计算斐波拉切代码实例
2019/09/12 Javascript
js实现简单的轮播图效果
2020/12/13 Javascript
Python中if __name__ == &quot;__main__&quot;详细解释
2014/10/21 Python
Python使用scrapy抓取网站sitemap信息的方法
2015/04/08 Python
python中正则表达式的使用方法
2018/02/25 Python
python格式化输出保留2位小数的实现方法
2019/07/02 Python
如何使用Python实现斐波那契数列
2019/07/02 Python
Pytorch模型转onnx模型实例
2020/01/15 Python
英国领先的维生素和营养补充剂直接供应商:Healthspan
2019/04/22 全球购物
英语硕士生求职简历的自我评价
2013/10/15 职场文书
开水果连锁店创业计划书
2013/12/29 职场文书
教师队伍管理制度
2014/01/14 职场文书
员工入职担保书范文
2014/04/01 职场文书
幼儿园法制宣传日活动总结
2014/11/01 职场文书
2015年社区中秋节活动总结
2015/03/23 职场文书
二十年同学聚会感言
2015/07/30 职场文书
2016党校学习心得体会
2016/01/07 职场文书
基于nginx实现上游服务器动态自动上下线无需reload的实现方法
2021/03/31 Servers
vue 自定义组件添加原生事件
2022/04/21 Vue.js
Windows Server 2019 安装DHCP服务及相关配置
2022/04/28 Servers