vue指令做滚动加载和监听等


Posted in Javascript onMay 26, 2019

突然有个人问起vue如何做滚动监听?

既然你诚心诚意的发问了, 我就大发慈悲的告诉你.(武藏 & 小次郎)

指令可以很好的做这件事情, 下面以element-select举例:

directives.js

// v-loadmore: 用于在element-ui的select下拉框加上滚动到底事件监听
Vue.directive('loadmore', {
  bind(el, binding) {
   
   // 获取element-ui定义好的scroll盒子
   const SELECTWRAP_DOM = el.querySelector('.el-select-dropdown .el-select-dropdown__wrap');
  
   SELECTWRAP_DOM.addEventListener('scroll', function() {

     /*
      * scrollHeight 获取元素内容高度(只读)
      * scrollTop 获取或者设置元素的偏移值,常用于, 计算滚动条的位置, 当一个元素的容器没有产生垂直方向的滚动条, 那它的scrollTop的值默认为0.
      * clientHeight 读取元素的可见高度(只读)
      * 如果元素滚动到底, 下面等式返回true, 没有则返回false:
      * ele.scrollHeight - ele.scrollTop === ele.clientHeight;
      */
     const CONDITION = this.scrollHeight - this.scrollTop <= this.clientHeight;
     
     if(CONDITION) {
       binding.value();
     }
   });
  }
})

组件中:

<template>
  <el-select 
    v-model="selectValue" 
    v-loadmore="loadMore">
    <el-option
      v-for="item in options"
      :key="item.id"
      :label="item.accountName"
      :value="item.id">
    </el-option>
  </el-select>
</template>

// methods
loadMore() {
  // 这里可以做你想做的任何事 到底执行
},

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
jquery 插件 任意位置浮动固定层
Dec 25 Javascript
Js 本页面传值实现代码
May 17 Javascript
js function定义函数使用心得
Apr 15 Javascript
jQuery中addClass()方法用法实例
Jan 05 Javascript
jQuery中$this和$(this)的区别介绍(一看就懂)
Jul 06 Javascript
JS弹出窗口的运用与技巧大全
Nov 01 Javascript
Vue2.0父组件与子组件之间的事件发射与接收实例代码
Sep 19 Javascript
JS与jQuery实现ListBox上移,下移,左移,右移操作功能示例
May 31 jQuery
老生常谈JS中的继承及实现代码
Jul 06 Javascript
使用webpack将ES6转化ES5的实现方法
Oct 13 Javascript
Vue.js获取手机系统型号、版本、浏览器类型的示例代码
May 10 Javascript
Ant Design的可编辑Tree的实现操作
Oct 31 Javascript
vxe-table vue table 表格组件功能
May 26 #Javascript
使用Vue.observable()进行状态管理的实例代码详解
May 26 #Javascript
微信小程序 swiper 组件遇到的问题及解决方法
May 26 #Javascript
vue项目打包后怎样优雅的解决跨域
May 26 #Javascript
vue实现的上拉加载更多数据/分页功能示例
May 25 #Javascript
vue实现的请求服务器端API接口示例
May 25 #Javascript
Vue Autocomplete 自动完成功能简单示例
May 25 #Javascript
You might like
thinkphp学习笔记之多表查询
2014/07/28 PHP
Thinkphp无限级分类代码
2015/11/11 PHP
PHP面向对象多态性实现方法简单示例
2017/09/27 PHP
浅析PHP echo 和 print 语句
2020/06/30 PHP
ASP.NET jQuery 实例5 (显示CheckBoxList成员选中的内容)
2012/01/13 Javascript
jquery中通过父级查找进行定位示例
2013/06/28 Javascript
javascript中为某个元素指定事件的三种方式
2014/08/07 Javascript
JavaScript类继承及实例化的方法
2015/07/25 Javascript
Angular4学习笔记之根模块与Ng模块
2017/09/09 Javascript
JS动态添加元素及绑定事件造成程序重复执行解决
2017/12/07 Javascript
zTree 树插件实现全国五级地区点击后加载的示例
2018/02/05 Javascript
微信小程序实现星级评价效果
2018/12/28 Javascript
[56:42]完美世界DOTA2联赛循环赛 Matador vs Forest 第二场 11.06
2020/11/06 DOTA
python进阶教程之函数参数的多种传递方法
2014/08/30 Python
python框架django基础指南
2016/09/08 Python
视觉直观感受若干常用排序算法
2017/04/13 Python
python虚拟环境virtualenv的使用教程
2017/10/20 Python
详解Python logging调用Logger.info方法的处理过程
2019/02/12 Python
关于python中密码加盐的学习体会小结
2019/07/15 Python
详解Python中打乱列表顺序random.shuffle()的使用方法
2019/11/11 Python
python 使用elasticsearch 实现翻页的三种方式
2020/07/31 Python
手把手教你配置JupyterLab 环境的实现
2021/02/02 Python
菲律宾领先的在线时尚商店:Zalora菲律宾
2018/02/08 全球购物
Laura Geller官网:美国彩妆品牌
2018/12/29 全球购物
东方通信股份有限公司VC面试题
2014/08/27 面试题
大学生找工作推荐信范文
2013/11/28 职场文书
矫正人员思想汇报
2014/01/08 职场文书
校园招聘策划书
2014/01/09 职场文书
幼儿园户外活动总结
2014/07/04 职场文书
高中军训的心得体会
2014/09/01 职场文书
学习党的群众路线实践活动思想汇报
2014/09/12 职场文书
农业生产宣传标语
2014/10/08 职场文书
2014小学教师个人工作总结
2014/11/10 职场文书
幼儿园教师工作总结2015
2015/04/02 职场文书
建筑工程催款函
2015/06/24 职场文书
Spring Data JPA使用JPQL与原生SQL进行查询的操作
2021/06/15 Java/Android