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 相关文章推荐
为EasyUI的Tab标签添加右键菜单的方法
Jul 14 Javascript
js动态创建标签示例代码
Jun 09 Javascript
innerHTML动态添加html代码和脚本兼容多个浏览器
Oct 11 Javascript
angularjs 处理多个异步请求方法汇总
Jan 06 Javascript
jQuery深拷贝Json对象简单示例
Jul 06 Javascript
jQuery插件Flexslider实现图片轮播、图文结合滑动切换效果
Apr 16 Javascript
jQuery实现边框动态效果的实例代码
Sep 23 Javascript
浅谈JS中的!=、== 、!==、===的用法和区别
Sep 24 Javascript
JS对大量数据进行多重过滤的方法
Nov 04 Javascript
使用jQuery监听扫码枪输入并禁止手动输入的实现方法(推荐)
Mar 21 jQuery
详解webpack与SPA实践之开发环境搭建
Dec 18 Javascript
你不可不知的Vue.js列表渲染详解
Oct 01 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开发中常用的8个小技巧
2008/08/27 PHP
使用ob系列函数实现PHP网站页面静态化
2014/08/13 PHP
JS 文字符串转换unicode编码函数
2009/05/30 Javascript
上传的js验证(图片/文件的扩展名)
2013/04/25 Javascript
java必学必会之static关键字
2015/12/03 Javascript
AngularJS手动表单验证
2016/02/01 Javascript
Angularjs 实现分页功能及示例代码
2016/09/14 Javascript
如何利用模板将HTML从JavaScript中抽离
2016/10/08 Javascript
jQuery插件echarts去掉垂直网格线用法示例
2017/03/03 Javascript
ES6中的箭头函数实例详解
2017/04/06 Javascript
解决在vue项目中,发版之后,背景图片报错,路径不对的问题
2018/03/06 Javascript
解决JS表单验证只有第一个IF起作用的问题
2018/12/04 Javascript
vue表单验证你真的会了吗?vue表单验证(form)validate
2019/04/07 Javascript
webpack优化之代码分割与公共代码提取详解
2019/11/22 Javascript
json.stringify()与json.parse()的区别以及用处
2021/01/25 Javascript
Python实现的简单dns查询功能示例
2017/05/24 Python
详解python做UI界面的方法
2019/02/27 Python
Python 类,property属性(简化属性的操作),@property,property()用法示例
2019/10/12 Python
Python数据可视化:幂律分布实例详解
2019/12/07 Python
关于ResNeXt网络的pytorch实现
2020/01/14 Python
python GUI库图形界面开发之PyQt5输入对话框QInputDialog详细使用方法与实例
2020/02/27 Python
pandas数据处理之绘图的实现
2020/06/15 Python
HTML5 直播疯狂点赞动画实现代码 附源码
2020/04/14 HTML / CSS
俄罗斯极限运动网上商店:Board Shop №1
2020/12/18 全球购物
致短跑运动员广播稿
2014/01/09 职场文书
合伙协议书范本
2014/04/21 职场文书
幼儿园运动会口号
2014/06/07 职场文书
煤矿安全生产月活动总结
2014/07/05 职场文书
合作协议书范文
2014/08/20 职场文书
乡村教师党员四风问题对照检查材料思想汇报
2014/10/08 职场文书
2014超市收银员工作总结
2014/11/13 职场文书
2014年统计工作总结
2014/11/21 职场文书
2015年乡镇发展党员工作总结
2015/03/31 职场文书
海上钢琴师观后感
2015/06/03 职场文书
工作总结之小学教师体育工作范文(3篇)
2019/10/07 职场文书
Nginx动静分离配置实现与说明
2022/04/07 Servers