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模板技术
Apr 27 Javascript
JavaScript 替换Html标签实现代码
Oct 14 Javascript
JavaScript 原型链学习总结
Oct 29 Javascript
javascript题目,重写函数让其无限相加
Feb 15 Javascript
最流行的Node.js精简型和全栈型开发框架介绍
Feb 26 Javascript
创建自己的jquery表格插件
Nov 25 Javascript
jquery淡入淡出效果简单实例
Jan 14 Javascript
JS动态添加的div点击跳转到另一页面实现代码
Sep 30 Javascript
JS原生带缩略图的图片切换效果
Oct 10 Javascript
vue集成chart.js的实现方法
Aug 20 Javascript
完美解决通过IP地址访问VUE项目的问题
Jul 18 Javascript
vue-cli脚手架的.babelrc文件用法说明
Sep 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面向对象全攻略 (十五) 多态的应用
2009/09/30 PHP
CodeIgniter输出中文乱码的两种解决办法
2014/06/12 PHP
使用xampp搭建运行php虚拟主机的详细步骤
2015/10/21 PHP
详解PHP对数组的定义以及数组的创建方法
2015/11/27 PHP
老生常谈文本文件和二进制文件的区别
2017/02/27 PHP
PHP命名空间与自动加载机制的基础介绍
2019/08/25 PHP
JavaScript日历实现代码
2010/09/12 Javascript
基于JQuery实现的类似购物商城的购物车
2011/12/06 Javascript
jquery实现手机发送验证码的倒计时代码
2014/02/12 Javascript
简单谈谈Javascript中类型的判断
2015/10/19 Javascript
jquery实现的动态回到顶部特效代码
2015/10/28 Javascript
js实现对ajax请求面向对象的封装
2016/01/08 Javascript
快速使用Bootstrap搭建传送带
2016/05/06 Javascript
jquery ezUI 双击行记录弹窗查看明细的实现方法
2016/06/01 Javascript
etmvc+jQuery EasyUI+combobox多值操作实现角色授权实例
2016/11/09 Javascript
js装饰设计模式学习心得
2018/02/17 Javascript
浅谈React的最大亮点之虚拟DOM
2018/05/29 Javascript
在react中使用vuex的示例代码
2018/07/30 Javascript
使用JS实现导航切换时高亮显示的示例讲解
2018/08/22 Javascript
[02:32]DOTA2亚洲邀请赛 VG战队巡礼
2015/02/03 DOTA
Python MySQLdb模块连接操作mysql数据库实例
2015/04/08 Python
Python中函数的参数传递与可变长参数介绍
2015/06/30 Python
Centos7 Python3下安装scrapy的详细步骤
2018/03/15 Python
Linux下多个Python版本安装教程
2018/08/15 Python
实例讲解Python3中abs()函数
2019/02/19 Python
对python中基于tcp协议的通信(数据传输)实例讲解
2019/07/22 Python
selenium+PhantomJS爬取豆瓣读书
2019/08/26 Python
Python使用tkinter制作在线翻译软件
2021/02/22 Python
详解Css3新特性应用之过渡与动画
2017/01/10 HTML / CSS
英国最大的美妆产品在线零售商之一:Beauty Bay
2017/09/29 全球购物
俄罗斯品牌服装和鞋子的在线商店:KUPIVIP
2019/10/27 全球购物
英国钻石公司:British Diamond Company
2020/02/16 全球购物
如何向接受结构参数的函数传入常数值
2016/02/17 面试题
教师聘用意向书
2015/05/11 职场文书
mysql中varchar类型的日期进行比较、排序等操作的实现
2021/11/17 MySQL
el-form每行显示两列底部按钮居中效果的实现
2022/08/05 HTML / CSS