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 相关文章推荐
jQuery 相关控件的事件操作分解
Aug 03 Javascript
js 覆盖和重载 函数
Sep 25 Javascript
asp.net下利用js实现返回上一页的实现方法小集
Nov 24 Javascript
window.open关于浏览器拦截问题分析及解决方法
Feb 05 Javascript
javascript中怎么做对象的类型判断
Nov 11 Javascript
JS中window.open全屏命令解析及使用示例
Dec 11 Javascript
Node.js实现批量去除BOM文件头
Dec 20 Javascript
jQuery中:last选择器用法实例
Dec 30 Javascript
javascript和jquery实现用户登录验证
May 04 Javascript
微信小程序使用scroll-view标签实现自动滑动到底部功能的实例代码
Nov 09 Javascript
动态实现element ui的el-table某列数据不同样式的示例
Jan 22 Javascript
Vue2.0搭建脚手架
Mar 13 Vue.js
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异常:Parse error: syntax error, unexpected T_ENCAPSED_AND_WHITESPACE  eval()'d code error
2011/05/19 PHP
PHP 使用header函数设置HTTP头的示例解析 表头
2013/06/17 PHP
PHP模板引擎Smarty内置变量调解器用法详解
2016/04/11 PHP
PHP实现简单ajax Loading加载功能示例
2016/12/28 PHP
Laravel用户授权系统的使用方法示例
2018/09/16 PHP
探讨js中的双感叹号判断
2013/11/11 Javascript
ExtJS4 表格的嵌套 rowExpander应用
2014/05/02 Javascript
JavaScript的作用域和块级作用域概念理解
2014/09/21 Javascript
javascript实现的网站访问量统计代码
2015/12/20 Javascript
Bootstrap打造一个左侧折叠菜单的系统模板(二)
2016/05/17 Javascript
详解用vue.js和laravel实现微信支付
2017/06/23 Javascript
vue实现模态框的通用写法推荐
2018/02/26 Javascript
修改npm全局安装模式的路径方法
2018/05/15 Javascript
Vue press 支持图片放大功能的实例代码
2018/11/09 Javascript
JS双向链表实现与使用方法示例(增加一个previous属性实现)
2019/01/31 Javascript
详解Vue项目引入CreateJS的方法(亲测可用)
2019/05/30 Javascript
在Layui 的表格模板中,实现layer父页面和子页面传值交互的方法
2019/09/10 Javascript
js实现时间日期校验
2020/05/26 Javascript
微信小程序自定义顶部组件customHeader的示例代码
2020/06/03 Javascript
js实现炫酷光感效果
2020/09/05 Javascript
python实现查询苹果手机维修进度
2015/03/16 Python
Request的中断和ErrorHandler实例解析
2018/02/12 Python
python树莓派红外反射传感器
2019/01/21 Python
python实现二分类的卡方分箱示例
2019/11/22 Python
Python+Django+MySQL实现基于Web版的增删改查的示例代码
2020/05/13 Python
Win 10下Anaconda虚拟环境的教程
2020/05/18 Python
基于python实现地址和经纬度转换
2020/05/19 Python
Python中的全局变量如何理解
2020/06/04 Python
联想阿根廷官方网站:Lenovo Argentina
2019/10/14 全球购物
亿企通软件测试面试题
2012/04/10 面试题
药品质量检测应届生求职信
2013/11/14 职场文书
成品仓管员岗位职责
2013/12/11 职场文书
学雷锋标语
2014/06/25 职场文书
立春观后感
2015/06/18 职场文书
行政复议答复书
2015/07/01 职场文书
利用python实时刷新基金估值(摸鱼小工具)
2021/09/15 Python