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 表格插件整理
Apr 27 Javascript
基于jquery的文章中所有图片width大小批量设置方法
Aug 01 Javascript
Javasipt:操作radio标签详解
Dec 30 Javascript
AngularJS 使用 UI Router 实现表单向导
Jan 29 Javascript
AngularJS基础 ng-show 指令简单示例
Aug 03 Javascript
JQuery PHP图片在线裁剪实例
Jul 27 Javascript
动态加载css方法实现和深入解析
Jan 18 Javascript
使用canvas及js简单生成验证码方法
Apr 02 Javascript
ES6中let 和 const 的新特性
Sep 03 Javascript
vue项目前端知识点整理【收藏】
May 13 Javascript
关于vue.js中实现方法内某些代码延时执行
Nov 14 Javascript
详解Vue.js 响应接口
Jul 04 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读取文件内容至字符串中,同时去除换行、空行、行首行尾空格(Zjmainstay原创)
2012/07/31 PHP
使用PHP生成二维码的两种方法(带logo图像)
2014/03/14 PHP
PHP mkdir()无写权限的问题解决方法
2014/06/19 PHP
用javascript实现无刷新更新数据的详细步骤 asp
2006/12/26 Javascript
javascript 出生日期和身份证判断大全
2008/11/13 Javascript
jquery 可拖拽的窗体控件实现代码
2010/03/21 Javascript
js继承的实现代码
2010/08/05 Javascript
JavaScript初学者需要了解10个小技巧
2010/08/25 Javascript
javascript实用小函数使用介绍
2013/11/11 Javascript
在Mac OS下使用Node.js的简单教程
2015/06/24 Javascript
javascript页面倒计时实例
2015/07/25 Javascript
Jquery日历插件制作简单日历
2015/10/28 Javascript
简单解析JavaScript中的__proto__属性
2016/05/10 Javascript
Jquery给当前页或者跳转后页面的导航栏添加选中后样式的实例
2016/12/08 Javascript
AngularJS的Filter的示例详解
2017/03/07 Javascript
详解vue跨组件通信的几种方法
2017/06/15 Javascript
js实现本地时间同步功能
2017/08/26 Javascript
vue.js vue-router如何实现无效路由(404)的友好提示
2017/12/20 Javascript
详解node字体压缩插件font-spider的用法
2018/09/28 Javascript
JavaScript Array对象使用方法解析
2019/09/24 Javascript
JavaScript中this的学习笔记及用法整理
2020/02/17 Javascript
小程序中手机号识别的示例
2020/12/14 Javascript
[49:31]DOTA2-DPC中国联赛 正赛 Elephant vs LBZS BO3 第二场 1月29日
2021/03/11 DOTA
星球大战与Python之间的那些事
2016/01/07 Python
python结合shell查询google关键词排名的实现代码
2016/02/27 Python
Python实现的科学计算器功能示例
2017/08/04 Python
python互斥锁、加锁、同步机制、异步通信知识总结
2018/02/11 Python
使用pandas读取csv文件的指定列方法
2018/04/21 Python
在pycharm上mongodb配置及可视化设置方法
2018/11/30 Python
Python设计模式之策略模式实例详解
2019/01/21 Python
python 修改本地网络配置的方法
2019/08/14 Python
python scipy卷积运算的实现方法
2019/09/16 Python
PyCharm使用之配置SSH Interpreter的方法步骤
2019/12/26 Python
python字典的值可以修改吗
2020/06/29 Python
群众路线剖析材料(四风)
2014/11/05 职场文书
2016年公司新年寄语
2015/08/17 职场文书