首页 > 其他分享 >vue3实现自定义指令

vue3实现自定义指令

时间:2023-06-07 16:45:04浏览次数:60  
标签:el style img 自定义 content 指令 vue3 div empty

创建一个empty.js

import { nextTick } from 'vue';
const emptyImgUrl = new URL('@/assets/images/empty-icon.jpeg', import.meta.url).href; // 在vue3中不支持require引入静态图片,这是一种引入方式 另外一种是直接import
const empty = {
  install(app, options) {
    app.directive('empty', (el, binding, vnode, oldVnode) => {
      nextTick(() => {
        let show = binding.value.show;
        let ElClass = binding.value.el;
        const _DOM = el.querySelector(`.${ElClass}`);
        if (!_DOM) {
          return;
        }
        if (show) {
          _DOM.style.display = 'block';
          const empty_content = el.querySelector('.empty_content');
          if (empty_content) empty_content.remove();
        } else {
          _DOM.style.display = 'none';
          let div = document.createElement('div');
          div.className = 'empty_content';
          div.style.height = '100%';
          div.style.width = '100%';
          div.style.display = 'flex';
          div.style.alignItems = 'center';
          div.style.justifyContent = 'center';
          let img = document.createElement('img');
          img.setAttribute('src', emptyImgUrl);
          div.appendChild(img);
          el.appendChild(div);
        }
      });
    });
  }
};
export default empty;

在main.js在引入:

import empty from './directive/empty';
app.use(empty);

在具体页面使用:

<div v-empty="{ el: 'empty', show: false }">
    <div class="empty"></div>
</div>

这样就完成了vue3自定义指令!

 

标签:el,style,img,自定义,content,指令,vue3,div,empty
From: https://www.cnblogs.com/zaijin-yang/p/17463822.html

相关文章

  • 运维人员福音!自定义插件为运维提供更多可能
    想要轻松应对业务问题吗?想要想迪哥一样不再焦虑吗?想要实现指标监控自主性吗?倾情推荐嘉为蓝鲸一体化运维平台WeOps让监测更加随心应手只要能用工具解决的问题WeOps都能解决支持跨云跨管理,低负载采用Agent-Proxy-Server模式,轻松实现企业跨云跨网络的管理诉求。Agent启动内存仅需20M,资......
  • Vue3 之 响应式 API reactive、 effect源码,详细注释
    Vue3之响应式APIreactive、effect源码,详细注释目录一.实现响应式API:reactive、shallowReactive、readonly、shallowReadonly1.针对不同的API创建不同的响应式对象2.实现createReactiveObject3.实现不同的拦截函数baseHandlers.ts二.实现响应式effect1.创建响应式的......
  • vue3 mock接口
    以下基于mock的vite-plugin-mock版本为2.9.6实现,其他版本有可能导致报错1.安装依赖:https://www.npmjs.com/package/[email protected].在vite.config.js配置文件启动插件//mock插件提供的方法import{viteMockServe}f......
  • vue3使用ElementPlus的消息el-message样式不生效或者被遮盖(z-index)
    一、el-message自定义样式不生效想改弹出框的位置时不生效,使用了el-message的自定义类的custom-class属性也不行。原因应该是加了scoped后使用到里面样式的dom会添加data-v-xxxx这种属性防止css污染,但是message生成的dom是没有添加data-v-xxx属性的,所以样式无效。解决方式:js动态设......
  • 7、hive shell客户端与属性配置、内置运算符、函数(内置运算符与自定义UDF运算符)
    ApacheHive系列文章1、apache-hive-3.1.2简介及部署(三种部署方式-内嵌模式、本地模式和远程模式)及验证详解2、hive相关概念详解--架构、读写文件机制、数据存储3、hive的使用示例详解-建表、数据类型详解、内部外部表、分区表、分桶表4、hive的使用示例详解-事务表、视图、物......
  • vue常见自定义指令
    常见自定义指令一、响应缩放指令使用<divv-resize="resize"></div>代码/***响应缩放指令*@direction使用该指令可以响应元素宽高改变时执行的方法。*@resize{function}传入对应resize方法*v-resize="resize"**/exportdefault{bind(el,bi......
  • vue3使用知识点笔记大全
    vue3使用知识点笔记大全 一、vue3项目搭建[email protected] 使用elementplusui框架npmi-Selementplus//全部引入importElementPlusfrom'element-plus';import'element-plus/dist/index.css';constV......
  • DockerFile编写以及指令
    DockerFile编写以及指令什么是Dockerfile?(重点是构建镜像)Dockerfile是一个用来构建镜像的文本文件,文本内容包含了一条条构建镜像所需的指令和命令使用Dockerfile定制镜像这里仅讲解如何运行Dockerfile文件来定制一个镜像,具体Dockerfile文件内指令详解,将在下一节中介绍,......
  • Dockerfile指令说明简洁版
    Dockerfile指令说明简洁版FROM构建镜像基于哪个镜像MAINTAINER镜像维护者姓名或邮箱地址RUN构建镜像时运行的指令CMD运行容器时执行的shell环境VOLUME指定容器挂载点到宿主机自动生成的目录或其他容器USER为RUN、CMD、和ENTRYPOINT执行命令指定运行用户......
  • qt 自定义工具栏
    自定义工具栏这个类中杂质较多,主要是是单击标签改变经纬度显示类型。调用方法,在析构函数中删除if(_statusBar)delete_statusBar;voidMainWindow::createStatusBar(){if(!_statusBar)_statusBar=newTDStatusBar(this);_statusBar->setFixe......