vue.js中滚动条加载更多数据

Posted lin_zone

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了vue.js中滚动条加载更多数据相关的知识,希望对你有一定的参考价值。

本文章参考:http://www.cnblogs.com/ssrsblogs/p/6108423.html

 

分析:
1.需要判断滚动条是否到底部:

需要用到DOM的三个属性值,即scrollTop、clientHeight、scrollHeight。

  scrollTop为滚动条在Y轴上的滚动距离。

  clientHeight为内容可视区域的高度。

  scrollHeight为内容可视区域的高度加上溢出(滚动)的距离。

  从这个三个属性的介绍就可以看出来,滚动条到底部的条件即为scrollTop + clientHeight == scrollHeight。(兼容不同的浏览器)。

 

vue的生命周期:参考:https://segmentfault.com/a/1190000008010666

 

在vue的页面组件中有一个created 时期,在这里给窗口加上窗口滚动的监听

例:

判断,到达窗口底部的时候,执行自定义的get方法

自定义的get就是向后台发送请求数据的方法,其中每次调用后都执行 page++

这样才能保证每次请求的数据不重复

 

至于在后台的方法,主要是部分:

$num = 5;        //$num是自定的每次请求的条数

$start = page*$num      

然后使用 limit 及 offset 查询:参考:http://blog.csdn.net/u012927188/article/details/41957879

经常用到在数据库中查询中间几条数据的需求

比如下面的sql语句:

① selete * from testtable limit 2,1;

② selete * from testtable limit 2 offset 1;

注意:

1.数据库数据计算是从0开始的

2.offset X是跳过X个数据,limit Y是选取Y个数据

3.limit  X,Y  中X表示跳过X个数据,读取Y个数据

这两个都是能完成需要,但是他们之间是有区别的:

①是从数据库中第三条开始查询,取一条数据,即第三条数据读取,一二条跳过

②是从数据库中的第二条数据开始查询两条数据,即第二条和第三条。

最后把查询的结果返回给刚刚请求该方法的get()中的ajax或axios

之后,使用

将新查询到的结果添加到之前在页面中渲染的数组,这样就可以实现瀑布流加载

 

注:

为了美观,如果使用一些loading及loadmore组件给用户一个等待的缓冲,一定要特别注意让这些组件显示的时机的条件

 

最后,希望这篇文章可以帮助到和我一样项目经验浅的人,

如需转载,请注明出处:http://www.cnblogs.com/zhuchenglin/p/6841990.html

 

以上是关于vue.js中滚动条加载更多数据的主要内容,如果未能解决你的问题,请参考以下文章

基于 Vue.js 的移动端组件库mint-ui实现无限滚动加载更多

基于 Vue.js 的移动端组件库mint-ui实现无限滚动加载更多

下拉加载更多内容(滚动加载)

下拉加载更多DEMO(js实现)

js防抖和节流优化浏览器滚动条滚动到最下面时加载更多数据

如何使用 JSON API 在 recyclerview 滚动上加载更多数据