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 相关文章推荐
JavaScript打字小游戏代码
Dec 26 Javascript
浅析js设置控件的readonly与enabled属性问题
Dec 25 Javascript
jquery ajax,ashx,json的用法总结
Feb 12 Javascript
使用jquery选择器如何获取父级元素、同级元素、子元素
May 14 Javascript
Express.JS使用详解
Jul 17 Javascript
DOM事件探秘篇
Feb 15 Javascript
详解Node.js中exports和module.exports的区别
Apr 19 Javascript
jQuery实现的简单在线计算器功能
May 11 jQuery
使用Vue自定义数字键盘组件(体验度极好)
Dec 19 Javascript
JS实现关闭小广告特效
Jan 29 Javascript
vue-axios同时请求多个接口 等所有接口全部加载完成再处理操作
Nov 09 Javascript
Bootstrap FileInput实现图片上传功能
Jan 28 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中使用模板的方法
2008/05/24 PHP
PHP使用GIFEncoder类生成gif动态滚动字幕
2014/07/01 PHP
php 判断页面或图片是否经过gzip压缩的方法
2017/04/05 PHP
php-msf源码详解
2017/12/25 PHP
php获取微信共享收货地址的方法
2017/12/21 PHP
关于php开启错误提示的总结
2019/09/24 PHP
学习面向对象之面向对象的术语
2010/11/30 Javascript
使用JS进行目录上传(相当于批量上传)
2010/12/05 Javascript
纯js网页画板(Graphics)类简介及实现代码
2012/12/24 Javascript
JavaScript 上万关键字瞬间匹配实现代码
2013/07/07 Javascript
通过action传过来的值在option获取进行验证的方法
2013/11/14 Javascript
jQuery客户端分页实例代码
2013/11/18 Javascript
javascript模拟实现C# String.format函数功能代码
2013/11/25 Javascript
JavaScript tab选项卡插件实例代码
2016/02/23 Javascript
仿Angular Bootstrap TimePicker创建分钟数-秒数的输入控件
2016/07/01 Javascript
微信小程序 获取微信OpenId详解及实例代码
2016/10/31 Javascript
Linux CentOS系统下安装node.js与express的方法
2017/04/01 Javascript
Vuejs实现带样式的单文件组件新方法
2017/05/02 Javascript
纯JS实现简单的日历
2017/06/26 Javascript
详解js静态资源文件请求的处理
2017/08/01 Javascript
Vue.js标签页组件使用方法详解
2019/10/19 Javascript
[54:15]DOTA2-DPC中国联赛 正赛 DLG vs Dragon BO3 第二场2月1日
2021/03/11 DOTA
浅析Python中将单词首字母大写的capitalize()方法
2015/05/18 Python
Python遍历目录中的所有文件的方法
2016/07/08 Python
matplotlib实现热成像图colorbar和极坐标图的方法
2018/12/13 Python
python3.6实现学生信息管理系统
2019/02/21 Python
Python实现KNN(K-近邻)算法的示例代码
2019/03/05 Python
Python中单线程、多线程和多进程的效率对比实验实例
2019/05/14 Python
英国和爱尔兰的自炊式豪华度假小屋:Rural Retreats
2018/06/08 全球购物
台湾7-ELEVEN线上购物中心:7-11
2021/01/21 全球购物
资深地理教师自我评价
2013/09/21 职场文书
外贸主管求职简历的自我评价
2013/10/23 职场文书
社区志愿者活动方案
2014/08/18 职场文书
2016年记者节感言
2015/12/08 职场文书
大学生暑期实践报告之企业经营管理
2019/08/08 职场文书
Django项目配置Memcached和Redis, 缓存选择哪个更有优势
2021/04/06 Python