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 相关文章推荐
经验几则 推荐
Sep 05 Javascript
js加入收藏夹代码(兼容ie/ff/op)
May 16 Javascript
一个简单的全屏图片上下打开显示网页效果示例
Jul 08 Javascript
JS 新增Cookie 取cookie值 删除cookie 举例详解
Oct 10 Javascript
jQuery简单实现网页选项卡特效
Nov 24 Javascript
jQuery实现的鼠标经过时变宽的效果(附demo源码)
Apr 28 Javascript
Javascript设计模式之装饰者模式详解篇
Jan 17 Javascript
bootstrap fileinput实现文件上传功能
Aug 23 Javascript
vue自定义底部导航栏Tabbar的实现代码
Sep 03 Javascript
layui-laydate时间日历控件使用方法详解
Nov 15 Javascript
微信小程序激励式视频广告组件使用详解
Dec 06 Javascript
安装多版本Vue-CLI的实现方法
Mar 24 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
php Smarty模板生成html文档的方法
2010/04/12 PHP
php获取服务器信息的实现代码
2013/02/04 PHP
国外十大最流行的PHP框架排名
2013/07/04 PHP
php读取文件内容的方法汇总
2015/01/24 PHP
PHP实现获取文件后缀名的几种常用方法
2015/08/08 PHP
原生js拖拽(第一课 未兼容)拖拽思路
2013/03/29 Javascript
JavaScript 命名空间 使用介绍
2013/08/29 Javascript
jquery使用$(element).is()来判断获取的tagName
2014/08/24 Javascript
node.js中的socket.io的广播消息
2014/12/15 Javascript
js实现超酷的照片墙展示效果图附源码下载
2015/10/08 Javascript
jQuery Form 表单提交插件之formSerialize,fieldSerialize,fieldValue,resetForm,clearForm,clearFields的应用
2016/01/23 Javascript
javascript中获取class的简单实现
2016/07/12 Javascript
Jquery UI实现一次拖拽多个选中的元素操作
2020/12/01 Javascript
Vue-cli3简单使用(图文步骤)
2019/04/30 Javascript
vue 移动端记录页面浏览位置的方法
2020/03/11 Javascript
JavaScript 装逼指南(js另类写法)
2020/05/10 Javascript
[01:04:09]DOTA2-DPC中国联赛 正赛 iG vs VG BO3 第二场 2月2日
2021/03/11 DOTA
Python统计列表中的重复项出现的次数的方法
2014/08/18 Python
详解Python函数可变参数定义及其参数传递方式
2017/08/02 Python
Python判断对象是否相等及eq函数的讲解
2019/02/25 Python
python Tcp协议发送和接收信息的例子
2019/07/22 Python
Python使用ffmpy将amr格式的音频转化为mp3格式的例子
2019/08/08 Python
Python 抓取数据存储到Redis中的操作
2020/07/16 Python
CSS3 制作旋转的大风车(充满童年回忆)
2013/01/30 HTML / CSS
夏威夷咖啡公司:Hawaii Coffee Company
2019/09/19 全球购物
Geekbuying波兰:购买中国电子产品
2019/10/20 全球购物
YII2 全局异常处理深入讲解
2021/03/24 PHP
工程预算与管理应届生求职信
2013/10/06 职场文书
小学生竞选班长演讲稿
2014/04/24 职场文书
2014年党员个人剖析材料
2014/10/08 职场文书
2015年教学工作总结
2015/04/02 职场文书
新郎父母婚礼答谢词
2015/09/29 职场文书
2015年小学体育教师工作总结
2015/10/23 职场文书
《蟋蟀的住宅》教学反思
2016/02/17 职场文书
如何Tomcat中使用ipv6地址
2022/05/06 Servers
一文搞懂PHP中的抽象类和接口
2022/05/25 PHP