当前位置: 首页 > news >正文

自定义指令

自定义指令 v-hasPermi

export function hasPermi(app: App<Element>) {app.directive('hasPermi', (el, binding) => {// 获取指令的值  例如 v-hasPetmi = "['del']"的值就是 ['del']const { value } = binding//获取所有权限const permissions   = xxxx// 判断传递的参数是否符合要求,不符合,抛出错误if (value && value instanceof Array && value.length > 0) {const permissionFlag = value//当前权限是否在所有的权限列表中const hasPermissions = permissions.some((permission: string) => {//这个例子只展示处理单个权限的,有多个权限的略。// 也可以设置用于多个权限的字段进行比较,例如 allPermission   allPermission === permission || permissionFlag.includes(permission)return permissionFlag.includes(permission)})//没有权限if (!hasPermissions) {el.parentNode && el.parentNode.removeChild(el)}} else {throw new Error('具体原因')}})
}

app.directive() 参数解析

Vue 3 的指令包含以下生命周期钩子:

钩子函数调用时机
created元素属性绑定前,但尚未挂载到 DOM。
beforeMount元素挂载到 DOM 前。
mounted元素挂载到 DOM 后(最常用)。
beforeUpdate元素更新前(仅当绑定的值变化时触发)。
updated元素更新后。
beforeUnmount元素卸载前。
unmounted元素卸载后。
app.directive('log', {created(el, binding) {console.log('Created:', binding.value);},mounted(el, binding) {console.log('Mounted:', binding.value);},updated(el, binding) {console.log('Updated:', binding.value);}...
});

一般常用的只有mounted ,updated这些,可以简写为:

app.directive('mouse',(el,binding)=>{console.log(binding.value);
})

钩子函数的第二个参数 binding 包含以下属性:

属性描述
value指令绑定的值(如 v-my-directive="42" 中的 42)。
oldValue更新前的值(仅在 beforeUpdateupdated 中可用)。
arg指令的参数(如 v-my-directive:arg 中的 "arg")。
modifiers修饰符对象(如 v-my-directive.modifier 中的 { modifier: true })。
instance当前组件实例。
dir指令的定义对象。
app.directive('color', {mounted(el, binding) {// v-color:bg="'red'" → 设置背景色// v-color:text="'blue'" → 设置文字颜色if (binding.arg === 'bg') {el.style.backgroundColor = binding.value;} else if (binding.arg === 'text') {el.style.color = binding.value;}}
});

在模板中使用:

<div v-color:bg="'lightgreen'">背景色</div>
<div v-color:text="'red'">文字颜色</div>
http://www.dtcms.com/a/268050.html

相关文章:

  • 一条 SQL 语句的内部执行流程详解(MySQL为例)
  • 进程控制中URL攻击与修复方法
  • ether0 大语言推理模型生成SMILES 的分子
  • java并发编程--可见性、原子性、有序性
  • 进程终止:exit()与_exit()深度解析
  • 模块化汽车基础设施的正面交锋---区域架构与域架构
  • 电信、移动、联通、广电跨运营商网速慢原因
  • QML与C++交互之QML端信号绑定C++端槽函数
  • uniapp实现的多种时间线模板
  • jmm,`as - if - serial` 与 `happens - before` 原则
  • Dubbo 3.x源码(31)—Dubbo消息的编码解码
  • 容声W60以光水离子科技实现食材“主动养鲜”
  • 创客匠人深度剖析:家庭教育赛道创始人 IP 打造与知识变现的破局之道
  • 【算法刷题记录(简单题)003】统计大写字母个数(java代码实现)
  • 0704-0706上海,又聚上了
  • 【MyBatis】实现数据库的增、删、改、查
  • 深度解析命令模式:将请求封装为对象的设计智慧
  • 儿童趣味记忆配对游戏
  • LeetCode 75. 颜色分类(荷兰国旗问题)
  • 一次佳能iX6780彩色喷墨打印机报5B00维修的记录
  • 【网络协议安全】任务13:ACL访问控制列表
  • 牛客周赛Round 99(Go语言)
  • 《kubernetes》k8s实战之部署PHP/JAVA网站
  • 中级统计师-经济学基础知识-第四章 国民收入核算
  • 单片机物联网应用中的 Pogopin、串口与外围模组通信技术解析
  • Java 大视界 -- Java 大数据在智能教育在线课程学习效果影响因素分析与优化设计(334)
  • Zotero中进行文献翻译【Windows11】
  • SpiceMix enables integrative single-cell spatial modeling of cell identity 文章解读
  • 【kafka-python使用学习笔记1:Python操作Kafka之环境准备(1)】
  • 2、Connecting to Kafka