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 经典动画菜单效果代码
Jan 26 Javascript
ExtJs GridPanel简单的增删改实现代码
Aug 26 Javascript
javascript测试题练习代码
Oct 10 Javascript
基于JQuery 滑动与动画的说明介绍
Apr 18 Javascript
实例讲解JS中数组Array的操作方法
May 09 Javascript
js实现动态创建的元素绑定事件
Jul 19 Javascript
深入理解React中es6创建组件this的方法
Aug 29 Javascript
浅析JS抽象工厂模式
Dec 14 Javascript
浅析vue-router jquery和params传参(接收参数)$router $route的区别
Aug 03 jQuery
Node 模块原理与用法详解
May 13 Javascript
如何利用JavaScript实现二叉搜索树
Apr 02 Javascript
JS实现简单控制视频播放倍速的实例代码
Apr 18 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
Protoss热键控制
2020/03/14 星际争霸
合作指挥官:孟斯克
2020/03/16 星际争霸
PHP 应用容器化以及部署方法
2018/02/12 PHP
javascript字典探测用户名工具
2006/10/05 Javascript
文本框获得焦点和失去焦点的判断代码
2012/03/18 Javascript
jquery $.trim()方法使用介绍
2014/05/21 Javascript
JavaScript实现从数组中选出和等于固定值的n个数
2014/09/03 Javascript
js树插件zTree获取所有选中节点数据的方法
2015/01/28 Javascript
js文本框输入内容智能提示效果
2015/12/02 Javascript
jQuery Chart图表制作组件Highcharts用法详解
2016/06/01 Javascript
基于angular实现三级联动的生日插件
2017/05/12 Javascript
vue轮播图插件vue-awesome-swiper的使用代码实例
2017/07/10 Javascript
详解Vue 全局引入bass.scss 处理方案
2018/03/26 Javascript
深入理解移动前端开发之viewport
2018/10/19 Javascript
vue实现PC端录音功能的实例代码
2019/06/05 Javascript
vue项目中引入Sass实例方法
2019/08/27 Javascript
Vue自定义组件双向绑定实现原理及方法详解
2020/09/03 Javascript
python 快速排序代码
2009/11/23 Python
python基础入门详解(文件输入/输出 内建类型 字典操作使用方法)
2013/12/08 Python
Python IDLE入门简介
2017/12/08 Python
OpenCV2从摄像头获取帧并写入视频文件的方法
2018/08/03 Python
实例讲解python中的序列化知识点
2018/10/08 Python
对python模块中多个类的用法详解
2019/01/10 Python
Pandas之ReIndex重新索引的实现
2019/06/25 Python
python爬虫的一个常见简单js反爬详解
2019/07/09 Python
pip install python 快速安装模块的教程图解
2019/10/08 Python
python 使用shutil复制图片的例子
2019/12/13 Python
PHP如何与mysql建立链接
2013/05/05 面试题
我的网上商城创业计划书
2013/12/26 职场文书
金融事务专业求职信
2014/04/25 职场文书
个人校本研修方案
2014/05/26 职场文书
文明好少年事迹材料
2014/08/19 职场文书
党员自我剖析材料(群众路线)
2014/10/06 职场文书
社会心理学学习心得体会
2016/01/22 职场文书
nginx前后端同域名配置的方法实现
2021/03/31 Servers
Redis 持久化 RDB 与 AOF的执行过程
2021/11/07 Redis