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 相关文章推荐
跨浏览器的设置innerHTML方法
Sep 18 Javascript
基于jQuery实现的当离开页面时出现提示的实现代码
Jun 27 Javascript
JS取模、取商及取整运算方法示例
Oct 13 Javascript
VueJS全面解析
Nov 10 Javascript
jQuery实现动态添加tr到table的方法
Dec 26 Javascript
React Native中Navigator的使用方法示例
Oct 13 Javascript
IntelliJ IDEA 安装vue开发插件的方法
Nov 21 Javascript
详解create-react-app 2.0版本如何启用装饰器语法
Oct 23 Javascript
你不知道的Vue技巧之--开发一个可以通过方法调用的组件(推荐)
Apr 15 Javascript
Vue设置长时间未操作登录自动到期返回登录页
Jan 22 Javascript
JS+DIV实现拖动效果
Feb 11 Javascript
小程序websocket心跳库(websocket-heartbeat-miniprogram)
Feb 23 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
学习php中的正则表达式
2014/08/17 PHP
php实现商城购物车的思路和源码分析
2020/07/23 PHP
JSQL 基于客户端的成绩统计实现方法
2010/05/05 Javascript
jQuery学习总结之jQuery事件
2014/06/30 Javascript
对JavaScript中this指针的新理解分享
2015/01/31 Javascript
jQuery获取URL请求参数的方法
2015/07/18 Javascript
JS实现的Select三级下拉菜单代码
2015/08/20 Javascript
JS实现合并两个数组并去除重复项只留一个的方法
2015/12/17 Javascript
微信js-sdk地理位置接口用法示例
2016/10/12 Javascript
vue.js指令和组件详细介绍及实例
2017/04/06 Javascript
通过jquery.cookie.js实现记住用户名、密码登录功能
2018/06/20 jQuery
js尾调用优化的实现
2019/05/23 Javascript
使用jQuery实现掷骰子游戏
2019/10/24 jQuery
[02:28]PWL开团时刻DAY3——Ink Ice与DeMonsTer之间的勾心斗角
2020/11/03 DOTA
python实现决策树C4.5算法详解(在ID3基础上改进)
2017/05/31 Python
Python sqlite3事务处理方法实例分析
2017/06/19 Python
浅谈python迭代器
2017/11/08 Python
Android基于TCP和URL协议的网络编程示例【附demo源码下载】
2018/01/23 Python
python3使用smtplib实现发送邮件功能
2018/05/22 Python
python检测主机的连通性并记录到文件的实例
2018/06/21 Python
Python实现重建二叉树的三种方法详解
2018/06/23 Python
python 保存float类型的小数的位数方法
2018/10/17 Python
pycharm+PyQt5+python最新开发环境配置(踩坑)
2019/02/11 Python
Python OpenCV调用摄像头检测人脸并截图
2020/08/20 Python
Tensorflow tf.nn.depthwise_conv2d如何实现深度卷积的
2020/04/20 Python
CSS3 3D立方体效果示例-transform也不过如此
2016/12/05 HTML / CSS
STP协议的主要用途是什么?为什么要用STP
2012/12/20 面试题
会计专业毕业生自荐信范文
2013/12/20 职场文书
应届专科生个人的自我评价
2014/01/05 职场文书
小学生暑假感言
2014/02/06 职场文书
知识竞赛活动方案
2014/02/18 职场文书
关于美容院的活动方案
2014/08/14 职场文书
2014党员四风对照检查材料思想汇报
2014/09/17 职场文书
省委召开党的群众路线教育实践活动总结大会报告
2014/10/21 职场文书
污水处理保证书
2015/05/09 职场文书
为什么MySQL 删除表数据 磁盘空间还一直被占用
2021/10/16 MySQL