vue自定义指令clickoutside

2023-05-16

npm install vue-click-outside
方法一:

<span v-clickoutside="handleClose">内容</span>
<span @click.stop="isShow">点击出现的内容</span>
<script>
const clickoutside = {
  // 初始化指令
  bind(el, binding, vnode) {
    function documentHandler(e) {
      // 这里判断点击的元素是否是本身,是本身,则返回
      if (el.contains(e.target)) {
        return false;
      }
      // 判断指令中是否绑定了函数
      if (binding.expression) {
        // 如果绑定了函数 则调用那个函数,此处binding.value就是handleClose方法
        binding.value(e);
      }
    }
    // 给当前元素绑定个私有变量,方便在unbind中可以解除事件监听
    el.__vueClickOutside__ = documentHandler;
    document.addEventListener("click", documentHandler);
  },
  update() {},
  unbind(el, binding) {
    // 解除事件监听
    document.removeEventListener("click", el.__vueClickOutside__);
    delete el.__vueClickOutside__;
  },
};
export default {
	directives: { clickoutside },
	methods: {
		isShow() {
			this.show = !this.show;
		},
		handleClose(){
			this.show = false;
		}
	}
}
</script>

方法二:

<span v-click-outside="handleClose">其余内容</span>
<span @click.stop="isShow">点击出现的内容</span>
import { clickOutside } from 'common/js/event';
export default {
	directives: {clickOutside},
	methods: {
		isShow() {
			this.show = !this.show;
		},
		handleClose() {
			this.show = false;
		}
	}
}

event.js

export const clickOutside = {
  bind: function(el, binding, vNode) {
    el.__vueClickOutside__ = event => {
      if (!el.contains(event.target)) {
        // call method provided in v-click-outside value
        vNode.context[binding.expression](event);
        event.stopPropagation();
      }
    };
    document.body.addEventListener('click', el.__vueClickOutside__);
  },
  unbind: function(el, binding, vNode) {
    // Remove Event Listeners
    document.removeEventListener('click', el.__vueClickOutside__);
    el.__vueClickOutside__ = null;
  },
};
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

vue自定义指令clickoutside 的相关文章

  • YUM安装nginx

    想在 Alibaba Cloud Linux 3 2104 64位 CentOS 系统上安装 Nginx xff0c 你得先去添加一个资源库 xff0c 像这样 xff1a vim etc yum repos d nginx repo 使用

随机推荐

  • PX4固件在Gazebo下进行SITL仿真自己的包时遇到MODE: Unsupported FCU问题

    在运行别人的的px4代码时 xff0c 比如一个包Base control中 xff0c 终端提示了MODE Unsupported FCU xff0c 该错误主要是因为端口不正确 xff0c mavros没能正确的连接到px4固件 xff
  • 学习OpenCV在SFM系统的使用

    文章目录 OpenCV构建SFM模型SFM的概念从一对图像估计相机运动使用丰富特征描述符的点匹配利用光流进行点匹配寻找相机矩阵场景重建从多个场景重建重构的细化使用PCL可视化3D点云使用实例代码 本文是翻译自经典书籍Mastering OP
  • ROS无人机自主飞行(数传与串口)与PX4配置问题

    ROS无人机自主飞行与PX4配置问题 文中引用均为参考 xff0c 部分内容转载 xff01 特感谢提供了参考 xff01 PX4的配置 首先需要对PX4烧写固件 xff0c 版本问题上其实没有很多区别 xff0c 目前我所用的最新版本 1
  • js 如何删除对象整的key值

    采用delete进行删除 js 的delete可以根据key删除对象中的元素 var obj 61 定义一个对象 obj a 61 1 obj b 61 2 delete obj 39 a 39 打印obj b 2 delete a b 打
  • MSCKF-VIO源码框架及C++知识点总结

    MSCKF VIO源码框架及C 43 43 知识点总结 摘要MSCKF VIO程序架构前端前端流程图函数功能解读前端各主要函数模块耗时分析 后端后端流程图函数功能解读后端各主要函数模块耗时分析 运行过程分析 ROS里的信息流图C 43 43
  • 基于CNN(LeNet)的垃圾分类(C语言实现)

    基于CNN xff08 LeNet xff09 的垃圾分类 xff08 C语言实现CNN算子 xff09 一 先使用python训练模型二 提取参数提取模型参数提取图片 三 编写CNN算子在windows中实现在FPGA中实现 xff0c
  • Zigzag (最长交替子序列)

    Zigzag xff08 最长交替子序列 xff09 Your Ph D thesis on properties of integer sequences is coming along nicely Each chapter is on
  • educoder Git入门之本地版本库

    第1关 xff1a 本地版本库创建 创建gitTraining文件夹 mkdir gitTraining 进入gitTraining文件夹 cd gitTraining 请添加初始化本地Git仓库的命令 Begin git init End
  • Docker进阶之Dockerfile

    Dockerfile是一个文本格式的配置文件 xff0c 我们可以使用Dockerfile来快速创建自定义的镜像 Dockerfile内部包含了一条条的指令 xff0c 每一条指令构建一层 xff0c 因此每一条指令应当描述该层如何构建 层
  • 论激光雷达在无人车领域的作用和前景

    激光雷达 xff0c 是以发射激光束探测目标的位置 速度等特征量的雷达系统 其工作原理是向目标发射探测信号 激光束 然后将接收到的从目标反射回来的信号与发射信号进行比较 作适当处理后 就可获得目标的有关信息 如目标距离 方位 高度 速度 姿
  • Docker(三):镜像的使用

    镜像使用 当运行容器时 xff0c 使用的镜像如果在本地中不存在 xff0c docker 就会自动从 docker 镜像仓库中下载 xff0c 默认是从 Docker Hub 公共镜像源下载 操作命令说明检索docker search 关
  • TypeError: Expected Ptr<cv::UMat> for argument ‘img‘

    我创建了一个numpy矩阵并使用轴对换来对多个维度进行变换 xff0c 然后在上面画圆 xff1a import cv2 import numpy as np image 61 np zeros 3 255 255 dtype 61 np
  • Ubuntu系统中基于Docker的OpenVINO™开发环境搭建指南

    概要 OpenVINO 是英特尔推出的一套免费的开发套件 xff0c 旨在帮助开发者和数据科学家们加速他们在视觉计算以及深度学习的推理和部署方面的工作 OpenVINO 通过异构计算可以充分发挥英特尔硬件平台 xff08 包括CPU xff
  • docker build 镜像时报错 make: /bin/sh: Operation not permitted

    docker build 镜像时报错 make bin sh Operation not permitted 前言版本解决办法升级参考官方说明 xff1a 卸载旧版本安装 repository安装 docker启动重新构建 前言 因为某个原
  • 为什么数组变成tensor精度只有四位?

    64 TOC为什么数组变成tensor精度只有四位 xff1f 原数据为list 3 316344738006592 xff0c 1 777564764 xff0c xff0c 1 104965329170227 list变成tensor
  • Hadoop系列-HDFS工作流程和原理详解(九)

    一 HDFS 数据读写流程 HDFS 是 Hadoop 生态里面的数据存储层 xff0c 它是一个具有容错性的非常可靠的分布式文件系统 HDFS 以主从 xff08 Master Slave xff09 架构的方式工作 xff0c Name
  • 正则表达式(判断中文,判断英文字母、下划线、数字)

    1 判断输入得内容为中文 span class token keyword var span str span class token operator 61 span span class token keyword this span
  • echarts 折线图,可滑动

    1 主要得展示 折线图 xff0c x轴可以滑动 xff0c 如图 详细代码如下 xff1a span class token operator lt span template span class token operator gt s
  • echarts x轴一个数据;y轴左边数值,右边百分比。(柱状图)

    大概样子如下 xff1a 配置代码如下 xff1a span class token keyword export span span class token keyword const span span class token func
  • vue自定义指令clickoutside

    npm install vue click outside 方法一 xff1a span class token operator lt span span v span class token operator span clickout