## vue的scroll监听
*注意!你的容器得有一定高度,或者说能撑出来滚动条*
通常来说是以下这样子的:
> 添加原生监听
```javascript
// 添加监听
mounted(){
window.addEventListener("scroll", this.scrollHandle);
}
```
> 使用vue官方的v-on监听
```javascript
<template>
<div class="container" v-on:scroll="scrollHandle">
<div class="items"></div>
</div>
</template>
```
> 抑或是再给v-on加上一个修饰词
```javascript
<div class="container" v-on:scroll.native="scrollHandle">
```
**你会发现他们都没有用,这就是vue的"神奇"之处**
最简单正确的使用方法:
> 在addEventListener的第三个参数传入true
```javascript
mounted(){
window.addEventListener("scroll", this.scrollHandle, true);
}
```
就很神奇!!!竟然就可以了?!!
## 实现下拉加载更多
既然监听到了scroll事件,就可以拿到event(虽然这里我没用到event,因为打印出来感觉没啥用),和scrollTop,来实现下拉加载更多的功能。
```JavaScript
/**
* lastScrollTop 上次触发上拉加载之后的scrollTop
* pages 页数,方便从后端请求数据
* loadMore() 加载更多方法
*
*/
scrollHandle(){
let scrollTop = document.documentElement.scrollTop;
let clientHeight = document.documentElement.clientHeight;
if (scrollTop - this.lastScrollTop > 1000) {
// 滚动超过1000加载更多,也可以是800、500
this.loadMore()
console.log("loadmore");
this.lastScrollTop = scrollTop;
this.pages++;
}
}
```