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 相关文章推荐
基于mootools 1.3框架下的图片滑动效果代码
Apr 22 Javascript
JavaScript使用replace函数替换字符串的方法
Apr 06 Javascript
无阻塞加载js,防止因js加载不了影响页面显示的问题
Dec 18 Javascript
jquery实现输入框实时输入触发事件代码
Dec 21 Javascript
简单实现bootstrap导航效果
Feb 07 Javascript
详解AngularJs ui-router 路由的简单介绍
Apr 26 Javascript
详解升级react-router 4 踩坑指南
Aug 14 Javascript
简单实现jQuery轮播效果
Aug 18 jQuery
jquery实现回车键触发事件(实例讲解)
Nov 21 jQuery
js使用Promise实现简单的Ajax缓存
Nov 14 Javascript
基于js实现复制内容到操作系统粘贴板过程解析
Oct 11 Javascript
Vue SPA 首屏优化方案
Feb 26 Vue.js
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写的获取各搜索蜘蛛爬行记录代码
2012/08/21 PHP
9条PHP编程小知识及易犯的小错误
2015/01/22 PHP
刷新PHP缓冲区为你的站点加速
2015/10/10 PHP
给WordPress的编辑后台添加提示框的代码实例分享
2015/12/25 PHP
php 判断页面或图片是否经过gzip压缩的方法
2017/04/05 PHP
浅谈PHP中如何实现Hook机制
2017/11/14 PHP
js正则表达式的使用详解
2013/07/09 Javascript
JS正则表达式验证数字代码
2014/01/28 Javascript
纯js实现div内图片自适应大小(已测试,兼容火狐)
2014/06/16 Javascript
jQuery中Ajax的load方法详解
2015/01/14 Javascript
学习JavaScript正则表达式
2015/11/13 Javascript
详解javascript new的运行机制
2016/01/26 Javascript
无法获取隐藏元素宽度和高度的解决方案
2017/03/07 Javascript
详解Angular CLI + Electron 开发环境搭建
2017/07/20 Javascript
判断滚动条滑到底部触发事件(实例讲解)
2017/11/15 Javascript
Node解决简单重复问题系列之Excel内容的获取
2018/01/02 Javascript
vue组件实现可搜索下拉框扩展
2020/10/23 Javascript
vue动态改变背景图片demo分享
2018/09/13 Javascript
bootstrap Table实现合并相同行
2019/07/19 Javascript
[20:21]《一刀刀一天》第十六期:TI国际邀请赛正式打响,总奖金超过550万
2014/05/23 DOTA
python pickle 和 shelve模块的用法
2013/09/16 Python
Python StringIO模块实现在内存缓冲区中读写数据
2015/04/08 Python
Python数据类型中的“冒号“[::]——分片与步长操作示例
2018/01/24 Python
python3 写一个WAV音频文件播放器的代码
2019/09/27 Python
Python迭代器iterator生成器generator使用解析
2019/10/24 Python
详解vscode实现远程linux服务器上Python开发
2020/11/10 Python
捷克原创男装和女装购物网站:Bolf.cz
2018/04/28 全球购物
Regatta官网:英国最受欢迎的户外服装和鞋类品牌
2019/05/01 全球购物
英国索普公园票务和酒店套餐:Thorpe Breaks
2019/09/14 全球购物
香港士多网上超级市场:Ztore
2021/01/09 全球购物
中西医专业毕业生职业规划书
2014/02/24 职场文书
农村党支部书记党群众路线四风问题整改措施
2014/09/26 职场文书
质监局领导班子对照检查材料思想汇报
2014/09/27 职场文书
学校运动会简讯
2015/07/20 职场文书
高中政治教学反思
2016/02/23 职场文书
Python中基础数据类型 set集合知识点总结
2021/08/02 Python