vue 使用鼠标滚动加载数据的例子


Posted in Javascript onOctober 31, 2019

关于用鼠标滚动到某个位置我们就去加载数据,这样的场景与业务需求现在越来越常见,现在来分析下《vue.js 实战》中作者的一个解决策略:

1. 设置一个标志位用来判断数据是否在加载中

2. 将滚动区域设置成 overfow:auto(显示滚动条)

3. 给滚动区域加入监听事件并绑定ref属性 来获取DOM实例

4. 当鼠标滚动到底部时,加载数据

4.1 如果此时 标志位为true则 直接退出,不进行此时数据加载

关键代码如下:

<template>
  //...代码省略
//该div 为要滚动区域
<div class="daily-list" ref="list" @scroll="handleScroll">
  // ...
</div>
</template>
<script>
 export default{
   data(){
    return {
      recommendList:[], //存放滚动区域要显示的数据
      isLoading:false //默认没有在加载数据
    }
  },
  methods:{
    //获取数据
    getRecommendList(){
        //表示正在加载数据
      this.isLoading=true;
      $.ajax.get('news/before/'+preDay).then(res=>{
        this.recommendList.push(res);
        //数据请求完成
        this.isLoading=false;
      })
    },
    handleScroll(){
      const $list=this.$refs.list;
        //如果数据有在加载中则这次请求退出
      if(this.isLoading) return; 
      //已经滚动的距离加页面的高度等于整个内容区高度时,视为接触到底部 
      //scrollTop 获取到顶部的滚动距离
      // clientHeight 表示页面视口高度
      // scrollHeight 页面内容的高度 
     if($list.scrollTop+document.body.clientHeight>=$list.scrollHeight){
   this.getRecommendList();
   }
    }
  },
  mounted(){
    this.getRecommendList()
  }
}
</script>
<style>
  width: 300px;
  position: fixed;
  top:0;
  left: 150px;
  //出现滚动条
  overflow: auto;
</style>

以上这篇vue 使用鼠标滚动加载数据的例子就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
基于jQuery的图片大小自动适应实现代码
Nov 17 Javascript
js作用域及作用域链概念理解及使用
Apr 15 Javascript
input标签内容改变的触发事件介绍
Jun 18 Javascript
通过实例理解javascript中没有函数重载的概念
Jun 03 Javascript
JavaScript对象参数的引用传递
Jan 14 Javascript
详解Matlab中 sort 函数用法
Mar 20 Javascript
JS基于递归实现倒计时效果的方法
Nov 26 Javascript
在iframe中使bootstrap的模态框在父页面弹出问题
Aug 07 Javascript
Javascript中toFixed计算错误(依赖银行家舍入法的缺陷)解决方法
Aug 22 Javascript
微信小程序中上传图片并进行压缩的实现代码
Aug 28 Javascript
vue.js自定义组件directives的实例代码
Nov 09 Javascript
浅谈VUE中演示v-for为什么要加key
Jan 16 Javascript
axios 实现post请求时把对象obj数据转为formdata
Oct 31 #Javascript
Javascript和jquery在selenium的使用过程
Oct 31 #jQuery
使用axios发送post请求,将JSON数据改为form类型的示例
Oct 31 #Javascript
vue封装可复用组件confirm,并绑定在vue原型上的示例
Oct 31 #Javascript
关于vue表单提交防双/多击的例子
Oct 31 #Javascript
Vuex的实战使用详解
Oct 31 #Javascript
如何在Vue中抽离接口配置文件
Oct 31 #Javascript
You might like
web站点获取用户IP的安全方法 HTTP_X_FORWARDED_FOR检验
2013/06/01 PHP
析构函数与php的垃圾回收机制详解
2013/10/28 PHP
双冒号 ::在PHP中的使用情况
2015/11/05 PHP
CodeIgniter开发实现支付宝接口调用的方法示例
2016/11/14 PHP
TextArea设置MaxLength属性最大输入值的js代码
2012/12/21 Javascript
js中文逗号转英文实现
2014/02/11 Javascript
编写高效jQuery代码的4个原则和5个技巧
2014/04/24 Javascript
Javascript中对象继承的实现小例
2014/05/12 Javascript
jQuery增加自定义函数的方法
2015/07/18 Javascript
详解javascript中的事件处理
2015/11/06 Javascript
vue.js将unix时间戳转换为自定义时间格式
2017/01/03 Javascript
vue弹窗插件实战代码
2018/09/08 Javascript
小程序getLocation需要在app.json中声明permission字段
2019/04/04 Javascript
小程序如何获取多个formId实现详解
2019/09/20 Javascript
vue项目配置同一局域网可使用ip访问的操作
2020/10/23 Javascript
nuxt.js 在middleware(中间件)中实现路由鉴权操作
2020/11/06 Javascript
微信小程序canvas实现签名功能
2021/01/19 Javascript
[28:42]Ti4正赛VG vs NEWBEE1
2014/07/19 DOTA
Python读写txt文本文件的操作方法全解析
2016/06/26 Python
Python的装饰器使用详解
2017/06/26 Python
python3+PyQt5使用数据库表视图
2018/04/24 Python
Python图像处理之识别图像中的文字(实例讲解)
2018/05/10 Python
python抓取搜狗微信公众号文章
2019/04/01 Python
Python 正则表达式爬虫使用案例解析
2019/09/23 Python
在tensorflow中设置保存checkpoint的最大数量实例
2020/01/21 Python
浅谈python之自动化运维(Paramiko)
2020/01/31 Python
python对指定字符串逆序的6种方法(小结)
2020/04/02 Python
CSS3 text shadow字体阴影效果
2016/01/08 HTML / CSS
罗兰·穆雷官网:Roland Mouret
2018/09/28 全球购物
前台文员职责范本
2014/03/07 职场文书
2014婚礼司仪主持词
2014/03/14 职场文书
小学生运动会通讯稿
2014/09/23 职场文书
道歉短信大全
2015/05/12 职场文书
入党转正申请报告
2015/05/15 职场文书
python基于tkinter制作无损音乐下载工具
2021/03/29 Python
浅谈spring boot使用thymeleaf版本的问题
2021/08/04 Java/Android