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 相关文章推荐
Node.js和MongoDB实现简单日志分析系统
Apr 25 Javascript
jQuery模拟黑客帝国矩阵效果实例
Jun 28 Javascript
jQuery实现简单的列表式导航菜单效果代码
Aug 31 Javascript
jQuery拖动布局其结果保存到数据库
Oct 09 Javascript
javascript中return,return true,return false三者的用法及区别
Nov 17 Javascript
JS添加删除DIV的简单实例
Jul 08 Javascript
BOM系列第三篇之定时器应用(时钟、倒计时、秒表和闹钟)
Aug 17 Javascript
SelecT下拉框选中和取值的解决方法
Nov 22 Javascript
js 性能优化之算法和流程控制
Feb 15 Javascript
微信小程序功能之全屏滚动效果的实现代码
Nov 22 Javascript
JSON.stringify()方法讲解
Jan 31 Javascript
使用Promise封装小程序wx.request的实现方法
Nov 13 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
BBS(php &amp; mysql)完整版(六)
2006/10/09 PHP
js下函数般调用正则的方法附代码
2008/06/22 PHP
php简单浏览目录内容的实现代码
2013/06/07 PHP
php旋转图片90度的方法
2013/11/07 PHP
javascript 四则运算精度修正函数代码
2010/05/31 Javascript
JS特殊函数(Function()构造函数、函数直接量)区别介绍
2013/05/19 Javascript
js使用html()或text()方法获取设置p标签的显示的值
2014/08/01 Javascript
js格式化时间小结
2014/11/03 Javascript
基于Bootstrap实现Material Design风格表单插件 附源码下载
2016/04/18 Javascript
Vue.js每天必学之计算属性computed与$watch
2016/09/05 Javascript
bootstrap制作jsp页面(根据值让table显示选中)
2017/01/05 Javascript
vue一步步实现alert功能
2017/07/05 Javascript
微信小程序时间选择插件使用详解
2018/12/28 Javascript
在vue中获取微信支付code及code被占用问题的解决方法
2019/04/16 Javascript
Vue 实现前进刷新后退不刷新的效果
2019/06/14 Javascript
JavaScript 斐波那契数列 倒序输出 输出100以内的质数代码实例
2019/09/11 Javascript
微信小程序的引导页实现代码
2020/06/24 Javascript
echarts柱状图背景重叠组合而非并列的实现代码
2020/12/10 Javascript
vue中配置scss全局变量的步骤
2020/12/28 Vue.js
[01:03]悬念揭晓 11月26日DOTA2完美盛典不见不散
2017/11/23 DOTA
Python文件操作类操作实例详解
2014/07/11 Python
详解python的sorted函数对字典按key排序和按value排序
2018/08/10 Python
Python发送邮件测试报告操作实例详解
2018/12/08 Python
利用Python代码实现一键抠背景功能
2019/12/29 Python
Python实现i人事自动打卡的示例代码
2020/01/09 Python
安装多个版本的TensorFlow的方法步骤
2020/04/21 Python
Python基于gevent实现高并发代码实例
2020/05/15 Python
Python sqlalchemy时间戳及密码管理实现代码详解
2020/08/01 Python
英国家喻户晓的高街品牌:River Island
2017/11/28 全球购物
爱心捐书活动总结
2014/07/05 职场文书
党的群众路线教育实践活动个人对照检查剖析材料
2014/09/23 职场文书
2015年大学班长个人工作总结
2015/04/24 职场文书
Go各时间字符串使用解析
2021/04/02 Golang
CSS3 制作的书本翻页特效
2021/04/13 HTML / CSS
Python 如何安装Selenium
2021/05/06 Python
python基础学习之生成器与文件系统知识总结
2021/05/25 Python