VUE3注册指令的方法

embedded/2024/11/14 21:48:45/

指令注册只能全局指令和选项式页面指令,composition api没有页面指令

选项式页面指令
javascript"><template><div class="home"><h3>自定义指令</h3><div class="from"><el-input type="text" v-focus v-model="name" /></div></div>
</template>
​
<script>export default {data() {return {name: ''}},directives: {focus: {mounted(el, binding, vnode) {// el代表DOM实例// binding获取到传入的参数及验证v-focus.a.b.c的修饰符,获取其中的a、b、c// vnode获取当前的虚拟DOMconsole.log('el', el, binding, vnode);console.log('el.style',el.style);el.style.border = '1px solid red'el.focus()}}}}
</script>
​
<style lang="scss" scoped>
.home{display: flex;// justify-content: center;flex-direction: column;align-items: center;
}
.from{width: 20%;
}
</style>
全局指令
javascript">// main.js
import {createApp} from 'vue'
import App from './App'
// 引入指令文件
import hasPermi from './directive/hasPermi'
const app = createApp(App)
// 注册指令
app.directive('hasPermi', hasPermi)
​
app.mount('#app')

模拟按钮权限

javascript">// /api/role.js
/*** todo: 模拟权限按钮*/
// 数据操作返回的接口返回值
export const roleUser = ['user:admin:update', 'user:admin:delete', 'user:admin:add', 'user:admin:search', 'user:admin:list'
]
javascript">// /directive/hasPermi
// 获取根据用户获取用户按钮权限
import  { roleUser } from '@/api/role';
// 按钮权限
export default {mounted(el, binding, vnode) {const { value } = bindingconst all_permission = "*:*:*";// 后端返回的角色按钮权限const permissions = roleUserif (value && value instanceof Array && value.length > 0) {// 前端定义的const permissionFlag = valueconst hasPermissions = permissions.some(permission => {return all_permission === permission || permissionFlag.includes(permission)})console.log('hasPermissions', hasPermissions);if (!hasPermissions) {el.parentNode && el.parentNode.removeChild(el)}} else {throw new Error(`请设置操作权限标签值`)}}
}

页面使用

javascript"><template><div class="home"><div :style="{color: nowColor }">当前颜色:{{ nowColor }}</div><div class="event"><el-button class="bg-lime-500" type="success" @click="alterColor">改变颜色</el-button></div><hr /><div class="directives"><h2>自定义显示按钮</h2><!-- 该用户没权限,所以不显示 --><el-button v-hasPermi="['user:admin:detail']">详情</el-button></div></div>
</template>


http://www.ppmy.cn/embedded/42209.html

相关文章

坦克大战源码,C++复刻经典小游戏

源代码文末自取 狼人杀游戏&#xff1a;复古坦克大战的编程艺术 引言 在数字化飞速发展的今天&#xff0c;复古游戏以其独特的魅力和简单纯粹的游戏性&#xff0c;成为了游戏界的一股清流。它们不仅仅是游戏&#xff0c;更是一种文化&#xff0c;一种情怀。今天&#xff0c;…

Tomcat与JDK各版本的兼容性

Tomcat和JDK之间的兼容性通常取决于Tomcat的版本和JDK的版本。以下是Tomcat和JDK之间的一些常见版本兼容性概述&#xff1a; Tomcat 7&#xff1a; 兼容JDK 1.6、JDK 1.7 和 JDK 1.8。Tomcat 7是基于Java EE 6规范构建的&#xff0c;而JDK 1.6、1.7和1.8都提供了对Java EE 6规…

Nacos 进阶篇---Nacos服务端怎么维护不健康的微服务实例 ?(七)

一、引言 在 Nacos 后台管理服务列表中&#xff0c;我们可以看到微服务列表&#xff0c;其中有一栏叫“健康实例数” &#xff08;如下图&#xff09;&#xff0c;表示对应的客户端实例信息是否可用状态。 那Nacos服务端是怎么感知客户端的状态是否可用呢 &#xff1f; 本章…

反序列化漏洞(JBoss、apache log4、apache Shiro、JWT)Weblogic未授权访问、代码执行、任意上传

1.1什么是反序列化 就是把一个对象变成可以传输的字符串&#xff0c;目的就是为了方便传输。假设&#xff0c;我们写了一个class&#xff0c;这个class里面存有一些变量。当这个class被实例化了之后&#xff0c;在使用过程中里面的一些变量值发生了改变。以后在某些时候还会用到…

Qt | 布局部件拉伸(Stretch)原理及大小策略

Qt | 布局管理器基础(QLayout)01、简介 1、部件的大小策略 sizePolicy、大小限制、拉伸因子(Stretch Factors)的含义 ①、部件的大小策略、大小提示、拉伸因子从三个方面对布局内的部件怎样进行拉伸以填 满布局进行了说明。 ②、拉伸因子:描述了各个部件在进行拉伸时,多个…

Vitis HLS 学习笔记--避免使用多重访问指针

目录 1. 简介 2. 代码解析 2.1 pointer_stream_bad 2.2 pointer_stream_better 2.3 pointer_stream_good 3. 总结 1. 简介 本文将探讨在 Vitis HLS 中正确处理多重访问指针重要性以及其对功能的影响。通过分析示例代码&#xff0c;我们将讨论在如何正确处理指针访问&…

如何开发一个基于通义千问-14B的对话应用

目录 一:开发流程 二:安装 一:开发流程 1:安装环境 需要安装python依赖环境 2:配置项目 我们利用Langchain-Chatchat和Qwen1.5-14B-Chat-GPTQ-Int4来实现一个对话项目应用 3:启动项目 二:安装 1:安装环境 初始化一个python环境: conda create -n qwen-chat py…

【kubernetes】多 master 高可用集群架构部署

目录 前言 一、环境部署 二、master02 节点部署 1、拷贝相关文件 2、修改配置文件 3、启动各服务并设置开机自启 4、 查看node节点状态 三、负载均衡部署 1、部署 nginx 服务 1.1 编译安装 nginx 1.2 修改 nginx 配置文件 2、部署 keepalived 服务 2.1 yum安装 ke…