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 相关文章推荐
JavaScript Title、alt提示(Tips)实现源码解读
Dec 12 Javascript
jquery随机展示头像代码
Dec 21 Javascript
JQuery实现简单时尚快捷的气泡提示插件
Dec 20 Javascript
有关于JS构造函数的重载和工厂方法
Apr 07 Javascript
jQuery EasyUi实战教程之布局篇
Jan 26 Javascript
jQuery 获取多选框的值及多选框中文的函数
May 16 Javascript
最后说说Vue2 SSR 的 Cookies 问题
May 25 Javascript
浅谈webpack 四个核心概念之Entry
Jun 12 Javascript
ES6 Object方法扩展的应用实例分析
Jun 25 Javascript
js实现页面图片消除效果
Mar 24 Javascript
jquery实现图片放大镜效果
Dec 23 jQuery
如何在现代JavaScript中编写异步任务
Jan 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
PHP连接SQLServer2005 的问题解决方法
2010/07/19 PHP
Win7 64位系统下PHP连接Oracle数据库
2014/08/20 PHP
ThinkPHP基于PHPExcel导入Excel文件的方法
2014/10/15 PHP
PHP中strnatcmp()函数“自然排序算法”进行字符串比较用法分析(对比strcmp函数)
2016/01/07 PHP
高质量PHP代码的50个实用技巧必备(上)
2016/01/22 PHP
php版微信小店调用api示例代码
2016/11/12 PHP
php删除txt文件指定行及按行读取txt文档数据的方法
2017/01/30 PHP
PHP后台实现微信小程序登录
2018/08/03 PHP
PHP封装请求类实例分析【基于Yii框架】
2019/10/17 PHP
ppk谈JavaScript style属性
2008/10/10 Javascript
20个非常有用的PHP类库 加速php开发
2010/01/15 Javascript
读jQuery之一(对象的组成)
2011/06/11 Javascript
JS继承--原型链继承和类式继承
2013/04/08 Javascript
JavaScript中split() 使用方法汇总
2015/04/17 Javascript
基于js实现抽红包并分配代码实例
2019/09/19 Javascript
解决Nuxt使用axios跨域问题
2020/07/06 Javascript
python的else子句使用指南
2016/02/27 Python
python 中random模块的常用方法总结
2017/07/08 Python
flask + pymysql操作Mysql数据库的实例
2017/11/13 Python
python交互式图形编程实例(一)
2017/11/17 Python
Python实现k-means算法
2018/02/23 Python
python3.6+opencv3.4实现鼠标交互查看图片像素
2018/02/26 Python
python对列进行平移变换的方法(shift)
2019/01/10 Python
Pytorch卷积层手动初始化权值的实例
2019/08/17 Python
win10系统Anaconda和Pycharm的Tensorflow2.0之CPU和GPU版本安装教程
2019/12/03 Python
python路径的写法及目录的获取方式
2019/12/26 Python
Python使用type动态创建类操作示例
2020/02/29 Python
python中四舍五入的正确打开方式
2021/01/18 Python
CSS3圆角边框和边界图片效果实例
2016/07/01 HTML / CSS
Tommy Hilfiger澳洲官网:美国高端休闲领导品牌
2020/12/16 全球购物
M.M.LaFleur官网:美国职业女装品牌
2020/10/27 全球购物
高级Java程序员面试题
2016/06/23 面试题
《画家乡》教学反思
2014/04/22 职场文书
幼儿园教师个人总结
2015/02/05 职场文书
教师创先争优承诺书
2015/04/27 职场文书
nginx 防盗链防爬虫配置详解
2021/03/31 Servers