当前位置: 首页 > 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.xdnf.cn/news/1083655.html

相关文章:

  • java+vue+SpringBoo职业生涯规划系统(程序+数据库+报告+部署教程+答辩指导)
  • 【AI大模型】Spring AI 基于mysql实现对话持久存储详解
  • 多模态大语言模型arxiv论文略读(149)
  • 【网络协议安全】任务13:ACL访问控制列表
  • 深度学习图像分类数据集—蘑菇可食性识别分类
  • 使用Python将PDF转换成word、PPT
  • 量子计算机技术(第二节,到底什么是量子)
  • 【CSS-15】深入理解CSS transition-duration:掌握过渡动画的时长控制
  • 高速信号眼图
  • ASP.NET代码审计 Web Forms框架 SQL注入漏洞
  • 【Python】使用读取到的文件
  • 零成本搭建浏览器远程Linux桌面:Ubuntu/Debian方案全解析
  • MySQL数据库主从复制
  • python-if结构、三目运算符
  • 善用关系网络:开源AI大模型、AI智能名片与S2B2C商城小程序赋能下的成功新路径
  • 知识文档管理系统选型指南(中小企业专用)
  • CppCon 2018 学习:What Do We Mean When We Say Nothing At All?
  • 一文掌握Qt Quick数字图像处理项目开发(基于Qt 6.9 C++和QML,代码开源)
  • 计算机网络1.1:什么是Internet?
  • 电商系统二次开发找谁做?ZKmall开源商城前后端分离技术更易升级迭代
  • leetcode 每日一题 1865. 找出和为指定值的下标对
  • uniapp实现的多种时间线模板
  • Redis存储Cookie实现爬虫保持登录 requests | selenium
  • TCP/IP协议栈实现浅析(下) 报文接收相关函数及流程分析
  • 软件版本FCCU(故障采集与控制单元)设计
  • RS触发器Multisim电路仿真——硬件工程师笔记
  • Linux命令大全:按功能分类详解(附表格速查)
  • Altium Designer使用教程 第一章(Altium Designer工程与窗口)
  • 用户中心Vue3网页开发(1.0版)
  • Attention Is All You Need论文精读(逐段解析)