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 相关文章推荐
js写一个弹出层并锁屏效果实现代码
Dec 07 Javascript
jquery css 设置table的奇偶行背景色示例
Jun 03 Javascript
javascript实现textarea中tab键的缩排处理方法
Jun 26 Javascript
js实现的Easy Tabs选项卡用法实例
Sep 06 Javascript
JavaScript严格模式下关于this的几种指向详解
Jul 12 Javascript
bootstrap table sum总数量统计实现方法
Oct 29 Javascript
AngularJS实现动态切换样式的方法分析
Jun 26 Javascript
JavaScript中Dom操作实例详解
Jul 08 Javascript
jQuery实现弹出层效果
Dec 10 jQuery
Element-UI+Vue模式使用总结
Jan 02 Javascript
vue+element 实现商城主题开发的示例代码
Mar 26 Javascript
vue+spring boot实现校验码功能
May 27 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
JQuery跨Iframe选择实现代码
2010/08/19 Javascript
ASP.NET jQuery 实例6 (实现CheckBoxList成员全选或全取消)
2012/01/13 Javascript
jQuery插件zoom实现图片全屏放大弹出层特效
2015/04/15 Javascript
使用JQuery实现的分页插件分享
2015/11/05 Javascript
学习Angularjs分页指令
2016/07/01 Javascript
利用Jquery实现几款漂亮实用的时间轴(附示例代码)
2017/02/15 Javascript
JS中使用media实现响应式布局
2017/08/04 Javascript
vue项目创建并引入饿了么elementUI组件的步骤
2019/04/11 Javascript
在vue中使用setInterval的方法示例
2019/04/16 Javascript
vue+elementui 对话框取消 表单验证重置示例
2019/10/29 Javascript
node.js中事件触发器events的使用方法实例分析
2019/11/23 Javascript
python 读入多行数据的实例
2018/04/19 Python
python 通过 socket 发送文件的实例代码
2018/08/14 Python
pycharm安装和首次使用教程
2018/08/27 Python
Python使用Flask-SQLAlchemy连接数据库操作示例
2018/08/31 Python
Python中shapefile转换geojson的示例
2019/01/03 Python
如何使用pyinstaller打包32位的exe程序
2019/05/26 Python
如何利用Anaconda配置简单的Python环境
2019/06/24 Python
python如何基于redis实现ip代理池
2020/01/17 Python
Python tkinter实现日期选择器
2021/02/22 Python
CSS3使用多列制作瀑布流
2016/05/10 HTML / CSS
女士时装鞋:Chinese Laundry
2018/08/29 全球购物
新西兰便宜隐形眼镜购买网站:QUICKLENS New Zealand
2019/03/02 全球购物
豪华床上用品 :Jennifer Adams
2019/09/15 全球购物
研发工程师的岗位职责
2013/11/18 职场文书
大专毕业生自我鉴定
2013/11/21 职场文书
收银出纳员岗位职责
2014/02/23 职场文书
群众路线党课主持词
2014/04/01 职场文书
《学会合作》教学反思
2014/04/12 职场文书
小学课外阅读总结
2014/07/09 职场文书
2015年医院工作总结范文
2015/04/09 职场文书
2015年财务个人工作总结范文
2015/05/22 职场文书
三八妇女节新闻稿
2015/07/17 职场文书
《刷子李》教学反思
2016/02/20 职场文书
闭幕词的写作格式与范文!
2019/06/24 职场文书
JS创建或填充任意长度数组的小技巧汇总
2021/10/24 Javascript