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 相关文章推荐
asp(javascript)全角半角转换代码 dbc2sbc
Aug 06 Javascript
JavaScript 学习笔记一些小技巧
Mar 28 Javascript
IE6,IE7,IE8下使用Javascript记录光标选中范围(已补全)
Aug 28 Javascript
禁用Tab键JS代码兼容Firefox和IE
Apr 18 Javascript
Jquery $.getJSON 在IE下的缓存问题解决方法
Oct 10 Javascript
jQuery+PHP实现动态数字展示特效
Mar 14 Javascript
jQuery实现摸拟alert提示框
May 22 Javascript
学习使用bootstrap的modal和carousel
Dec 09 Javascript
JavaScript基于面向对象实现的猜拳游戏
Jan 03 Javascript
原生js实现的观察者和订阅者模式简单示例
Apr 18 Javascript
解决vue-router 嵌套路由没反应的问题
Sep 22 Javascript
详解uniapp的全局变量实现方式
Jan 11 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 注册时输入信息验证器的实现详解
2013/07/05 PHP
PHP 生成微信红包代码简单
2016/03/25 PHP
WordPress分页伪静态加html后缀
2016/06/08 PHP
解决laravel查询构造器中的别名问题
2019/10/17 PHP
网页里控制图片大小的相关代码
2006/06/13 Javascript
用Div仿showModalDialog模式菜单的效果的代码
2007/03/05 Javascript
JS实现在Repeater控件中创建可隐藏区域的代码
2010/09/16 Javascript
Java 正则表达式学习总结和一些小例子
2012/09/13 Javascript
jquery select多选框的左右移动 具体实现代码
2013/07/03 Javascript
完美解决AJAX跨域问题
2013/11/01 Javascript
js实现鼠标经过表格行变色的方法
2015/05/12 Javascript
JS实现窗口加载时模拟鼠标移动的方法
2015/06/03 Javascript
javascript框架设计之框架分类及主要功能
2015/06/23 Javascript
jquery实现的蓝色二级导航条效果代码
2015/08/24 Javascript
JS模拟实现Select效果代码
2015/09/24 Javascript
javascript数据类型验证方法
2015/12/31 Javascript
jquery遍历json对象集合详解
2016/05/18 Javascript
Boostrap实现的登录界面实例代码
2016/10/09 Javascript
Jquery实现上下移动和排序代码
2016/10/17 Javascript
jQuery File Upload文件上传插件使用详解
2016/12/06 Javascript
JS排序之选择排序详解
2017/04/08 Javascript
微信小程序 Animation实现图片旋转动画示例
2018/08/22 Javascript
使用JavaScript破解web
2018/09/28 Javascript
JavaScript的词法结构精华篇
2018/10/17 Javascript
javascript利用键盘控制小方块的移动
2020/04/20 Javascript
使用setup.py安装python包和卸载python包的方法
2013/11/27 Python
python+pyqt实现12306图片验证效果
2017/10/25 Python
Django对models里的objects的使用详解
2019/08/17 Python
使用虚拟环境打包python为exe 文件的方法
2019/08/29 Python
基于Python正确读取资源文件
2020/09/14 Python
利用django创建一个简易的博客网站的示例
2020/09/29 Python
详解如何用canvas画一个微笑的表情
2019/03/14 HTML / CSS
迟到检讨书大全
2014/01/25 职场文书
银行开户授权委托书格式
2014/10/10 职场文书
mysql如何配置白名单访问
2021/06/30 MySQL
vue-cli3.0修改打包后的文件名和文件地址,打包后本地运行报错解决
2022/04/06 Vue.js