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 XML实现两级级联下拉列表
Nov 10 Javascript
JavaScript之Object类型介绍
Apr 01 Javascript
JavaScript DOM操作表格及样式
Apr 13 Javascript
JavaScript实现的简单烟花特效代码
Oct 20 Javascript
Bootstrap3.0学习教程之JS折叠插件
May 27 Javascript
原生js实现可拖拽效果
Feb 28 Javascript
JS解析url查询参数的简单代码
Aug 06 Javascript
Vue.js划分组件的方法
Oct 29 Javascript
使用express搭建一个简单的查询服务器的方法
Feb 09 Javascript
JS面向对象的程序设计相关知识小结
May 26 Javascript
Auto.js自动收取自己和好友蚂蚁森林能量脚本
Jun 28 Javascript
详解Vue组件之间通信的七种方式
Apr 14 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
日本收入最高的漫画家:海贼王作者版税年收入高达8.45亿元
2020/03/04 日漫
php Hex RGB颜色值互换的使用
2013/05/10 PHP
php实现分页工具类分享
2014/01/09 PHP
php利用反射实现插件机制的方法
2015/03/14 PHP
php实现网站文件批量压缩下载功能
2015/10/28 PHP
php 调用ffmpeg获取视频信息的简单实现
2017/04/03 PHP
用JavaScript实现仿Windows关机效果
2007/03/10 Javascript
js中如何复制一个对象并获取其所有属性和属性对应的值
2013/10/24 Javascript
vue图片加载与显示默认图片实例代码
2017/03/16 Javascript
JavaScript数据结构之双向链表定义与使用方法示例
2017/10/27 Javascript
JS运动特效之完美运动框架实例分析
2018/01/24 Javascript
关于vuejs中v-if和v-show的区别及v-show不起作用问题
2018/03/26 Javascript
JS获取当前时间的年月日时分秒及时间的格式化的方法
2019/12/18 Javascript
JavaScript队列结构Queue实现过程解析
2020/03/07 Javascript
解决node终端下运行js文件不支持ES6语法
2020/04/04 Javascript
vue props 一次传多个值实例
2020/07/22 Javascript
Openlayers实现扩散的动态点(水纹效果)
2020/08/17 Javascript
Python爬虫框架Scrapy安装使用步骤
2014/04/01 Python
pymongo给mongodb创建索引的简单实现方法
2015/05/06 Python
在Lighttpd服务器中运行Django应用的方法
2015/07/22 Python
python中的二维列表实例详解
2018/06/19 Python
浅谈python3发送post请求参数为空的情况
2018/12/28 Python
浅析PyTorch中nn.Module的使用
2019/08/18 Python
Python高并发和多线程有什么关系
2020/11/14 Python
利用HTML5实现使用按钮控制背景音乐开关
2015/09/21 HTML / CSS
详解WebSocket跨域问题解决
2018/08/06 HTML / CSS
La Redoute英国官网:法国时尚品牌
2017/04/27 全球购物
Blancsom美国/加拿大:服装和生活用品供应商
2018/07/27 全球购物
求高于平均分的学生学号及成绩
2016/09/01 面试题
可靠的数据流传输TCP
2016/03/15 面试题
精细化工应届生求职信
2013/11/17 职场文书
我与祖国共奋进演讲稿
2014/09/13 职场文书
小学生成绩单评语
2014/12/31 职场文书
政府会议通知范文
2015/04/15 职场文书
2015年派出所工作总结
2015/04/24 职场文书
三十年同学聚会感言
2015/07/30 职场文书