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

学生个性化成长平台搭建随笔记

1.Vue的自定义指令

在 Vue.js 中,我们可以通过 Vue.directive() 方法来定义自定义指令。具体来说,我们需要传递两个参数:

  1. 指令名称:表示我们要定义的指令名称,可以是一个字符串值,例如:'has-role'。

  2. 钩子函数对象:表示包含了一组钩子函数的对象,用于定义指令的行为。这些钩子函数包括:bind、inserted、update、componentUpdated 和 unbind 等。

下面是一个简单的例子,演示了如何定义一个名为 v-focus 的自定义指令:

Vue.directive('hasDwRole', {inserted: function (el, binding) {changeHasRole(el, binding)}
})

 上面的代码中,我们定义了一个名为 has-dw-role 的自定义指令,并在 inserted 钩子函数中实现了聚焦元素的逻辑。在使用自定义指令时,只需在需要聚焦的元素上添加 v-has-dw-role 指令即可:

  <el-menu:default-active="defActive"mode="horizontal"background-color="#34495e"text-color="#fff"active-text-color="#409eff"class="dw-menu-height dw-menu"router@select="handleSelect"><el-menu-item index="/dw/survey" >我的问卷</el-menu-item><el-menu-item index="/dw/user" >个人中心</el-menu-item><el-menu-item v-has-dw-role="'DWSURVEY_SUPER_ADMIN'" index="/dw/admin/user" >用户管理</el-menu-item></el-menu>

1.1钩子函数对象

在定义自定义指令时,我们需要使用钩子函数对象来指定自定义指令的行为。这些钩子函数包括:

  1. bind:只调用一次,在指令绑定到元素上时立即执行。这里可以进行一些初始设置,例如添加事件监听器等。

  2. inserted:在绑定元素插入到父节点时调用(仅保证父节点存在,但不一定已被插入文档中)。这里可以进行一些操作,例如聚焦元素或者设置样式等。

  3. update:在组件更新时调用,但不包括初始渲染。首次渲染时不会调用此钩子函数。这里可以对元素进行一些更新操作,例如更新绑定的值。

  4. componentUpdated:在组件和子组件全部更新后调用。这里可以进行一些操作,例如更新样式或者调用第三方库等。

  5. unbind:只调用一次,在指令与元素解绑时立即执行。这里可以进行一些清理操作,例如移除事件监听器等。

inserted 和 update 钩子函数分别对应了 v-show 和 v-if 指令的行为钩子函数:bind 和 unbind 钩子函数分别对应了 v-on 指令的行为钩子函数等。

需要根据实际需求和场景选择合适的钩子函数来实现自定义指令的功能。希望这能够帮助你理解自定义指令的钩子函数!

1.2使用方法

需要注意的是,每个钩子函数都会接收三个参数:

  • el:指令所绑定的元素,可以用来直接操作 DOM。
  • binding:一个对象,包含了指令的信息。
  • vnode:Vue 编译生成的虚拟节点。
function changeHasRole (el, binding) {if (!roleCheck(binding.value)) {el.parentNode.removeChild(el)}function roleCheck (value) {const authority = DwAuthorized.getAuthority()for (let i=0; i<authority.length; i++) {if (value === authority[i]) {return true}}return false}
}
Vue.directive('hasDwRole', {inserted: function (el, binding) {changeHasRole(el, binding)}
})

相关文章:

学生个性化成长平台搭建随笔记

1.Vue的自定义指令 在 Vue.js 中&#xff0c;我们可以通过 Vue.directive() 方法来定义自定义指令。具体来说&#xff0c;我们需要传递两个参数&#xff1a; 指令名称&#xff1a;表示我们要定义的指令名称&#xff0c;可以是一个字符串值&#xff0c;例如&#xff1a;has-rol…...

XTuner InternLM-Chat 个人小助手认知微调实践

要解决的问题&#xff1a; 如何让模型知道自己做什么&#xff0c;是什么样身份。是谁创建了他&#xff01;&#xff01;&#xff01; 概述 目标&#xff1a;通过微调&#xff0c;帮助模型认清了解对自己身份弟位 方式&#xff1a;使用XTuner进行微调 微调前&#xff08;回答…...

编程笔记 Golang基础 025 列表

编程笔记 Golang基础 025 列表 一、列表的功能二、示例程序三、注意事项 在 Go 语言中&#xff0c;列表是一种数据结构&#xff0c;用于存储有序的元素集合&#xff0c;允许高效地进行插入和删除操作。Go 标准库中的 container/list 包提供了一个内置的双链表实现&#xff0c;它…...

Rollup + Ts

Rollup Ts RollupTs demo 一、文件配置 | - src | | - utils | | | - .ts | | - .babelrc | | - main.js | | - style.css | - package.json | - rollup.config.js | - tsconfig.json二、插件下载 rollup // rollup 基本的包 typescript // ts 包 rollup/plug…...

5个精美的wordpress中文企业主题模板

元宇宙WordPress主题模板 简洁大气的元宇宙 Metaverse WordPress主题模板&#xff0c;适合元宇宙行业的企业官网使用。 https://www.jianzhanpress.com/?p3292 职业技术培训WordPress主题模板 简洁大气的职业技术培训WordPress主题&#xff0c;适合用于搭建教育培训公司官方…...

【数据分享】2011-2023年我国地级市逐月二手房房价数据(Excel/Shp格式)

房价是一个城市发展程度的重要体现&#xff0c;一个城市的房价越高通常代表这个城市越发达&#xff0c;对于人口的吸引力越大&#xff01;因此&#xff0c;房价数据是我们在各项城市研究中都非常常用的数据&#xff01; 本次我们为大家带来的是2011-2023年我国地级市的逐月二手…...

鸿蒙会成为安卓的终结者吗?

随着近期鸿蒙OS系统推送测试版的时间确定&#xff0c;关于鸿蒙系统的讨论再次升温。 作为华为自主研发的操作系统&#xff0c;鸿蒙给人的第一印象是具有颠覆性。 早在几年前&#xff0c;业内就开始流传鸿蒙可能会代替Android的传言。毕竟&#xff0c;Android作为开源系统&…...

Sora横空出世!AI将如何撬动未来?

近日&#xff0c;OpenAI 发布首个视频生成“Sora”模型&#xff0c;该模型通过接收文字指令&#xff0c;即可生成60秒的短视频。 而在2022年末&#xff0c;同样是OpenAI发布的AI语言模型ChatGPT&#xff0c;简化了文本撰写、创意构思以及代码校验等任务。用户仅需输入一个指令&…...

Selenium浏览器自动化测试框架详解

selenium简介 介绍 Selenium [1] 是一个用于Web应用程序测试的工具。Selenium测试直接运行在浏览器中&#xff0c;就像真正的用户在操作一样。支持的浏览器包括IE&#xff08;7, 8, 9, 10, 11&#xff09;&#xff0c;Mozilla Firefox&#xff0c;Safari&#xff0c;Google C…...

XGB-11:随机森林

XGBoost通常用于训练梯度提升决策树和其他梯度提升模型。随机森林使用与梯度提升决策树相同的模型表示和推断&#xff0c;但使用不同的训练算法。可以使用XGBoost来训练独立的随机森林&#xff0c;或者将随机森林作为梯度提升的基模型。这里我们专注于训练独立的随机森林。 XG…...

超平面介绍

超平面公式 (1) 超平面是指n维线性空间中维度为n-1的子空间。它可以把线性空间分割成不相交的两部分。比如二维空间中&#xff0c;一条直线是一维的&#xff0c;它把平面分成了两部分&#xff1b;三维空间中&#xff0c;一个平面是二维的&#xff0c;它把空间分成了两部分。(2…...

【苍穹外卖】一些开发总结

1、DTO、VO的区别 DTO:如果前端返回的实体类和对应的实体类比较较大差别 使用DTO来封装数据 后面在使用 BeanUtils.copyProperties() 将熟悉复制到对应的实体类中 VO:主要用于展示数据,例如在控制器层和视图层之间。它通常包含一些与显示相关的属性,如标题、描述等。 2…...

Python 3 中,`asynchat`异步通信

在 Python 3 中&#xff0c;asynchat 是基于 asyncore 的一个高层抽象模块&#xff0c;用于处理异步通信协议。它提供了一种简单的方式来创建自定义的异步通信协议&#xff0c;并处理通信中的错误和异常。 asynchat 模块主要作用是将网络数据流分割成消息或者数据包&#xff0…...

RAW 编程接口 TCP 简介

一、LWIP 中 中 RAW API 编程接口中与 TCP 相关的函数 二、LWIP TCP RAW API 函数 三、LwIP_Periodic_Handle函数 LwIP_Periodic_Handle 函数是一个必须被无限循环调用的 LwIP支持函数&#xff0c;一般在 main函数的无限循环中调用&#xff0c;主要功能是为 LwIP各个模块提供…...

Oracle EBS FA折旧回滚的分录追溯

FA模块向子分类账和总账追溯分为两部分&#xff1a;事务表和折旧&#xff0c;但是FA相关表做其实关联计划外折旧的分录会被遗漏的原因&#xff1a; 如果已经当月折旧&#xff0c;运行完成折旧后&#xff0c;又进行了计划外折旧&#xff0c;因为计划折旧时又要区分【是否进行当月…...

sql注入 [极客大挑战 2019]FinalSQL1

打开题目 点击1到5号的结果 1号 2号 3号 4号 5号 这里直接令传入的id6 传入id1^1^1 逻辑符号|会被检测到&#xff0c;而&感觉成了注释符&#xff0c;&之后的内容都被替换掉了。 传入id1|1 直接盲注比较慢&#xff0c;还需要利用二分法来编写脚本 这里利用到大佬的脚…...

持续集成,持续交付和持续部署的概念,以及GitLab CI / CD的介绍

引言&#xff1a;上一期我们部署好了gitlab极狐网页版&#xff0c;今天我们介绍一下GitLabCI / CD 目录 一、为什么要 CI / CD 方法 1、持续集成 2、持续交付 3、持续部署 二、GitLab CI / CD简介 三、GitLab CI / CD 的工作原理 4、基本CI / CD工作流程 5、首次设置 …...

[Java 项目亮点] 三层限流设计

思路来源&#xff1a;bilibili 河北王校长 文章目录 面试官可能会问你能详细介绍一下Nginx的http_limit_req_module模块吗&#xff1f;你能解释一下如何在Nginx中配置http_limit_req_module模块吗&#xff1f;你知道如何调整Nginx的http_limit_req_module模块以适应不同的业务需…...

GPT-SoVITS 快速声音克隆使用案例:webui、api接口

参考: https://github.com/RVC-Boss/GPT-SoVITS 环境: Python 3.10 PyTorch 2.1.2, CUDA 12.0 安装包: 1、使用: 1)下载项目 git clone https://github.com/RVC-Boss/GPT-SoVITS.git2)下载预训练模型 https://huggingface.co/lj1995/GPT-SoVITS 下载模型文件放到GPT…...

高速自动驾驶智慧匝道(HIC)系统功能规范

智慧匝道功能规范 Highway Intelligent Change Functional Specification 文件状态&#xff1a; 【√】草稿 【】正式发布 【】正在修改 文件起草分工 撰写&#xff1a; 审核&#xff1a; 编制&#xff1a; 签名&#xff1a; 日期&#xff1a; 审核&#xff1a; 签名&am…...

《Qt C++ 与 OpenCV:解锁视频播放程序设计的奥秘》

引言:探索视频播放程序设计之旅 在当今数字化时代,多媒体应用已渗透到我们生活的方方面面,从日常的视频娱乐到专业的视频监控、视频会议系统,视频播放程序作为多媒体应用的核心组成部分,扮演着至关重要的角色。无论是在个人电脑、移动设备还是智能电视等平台上,用户都期望…...

QMC5883L的驱动

简介 本篇文章的代码已经上传到了github上面&#xff0c;开源代码 作为一个电子罗盘模块&#xff0c;我们可以通过I2C从中获取偏航角yaw&#xff0c;相对于六轴陀螺仪的yaw&#xff0c;qmc5883l几乎不会零飘并且成本较低。 参考资料 QMC5883L磁场传感器驱动 QMC5883L磁力计…...

理解 MCP 工作流:使用 Ollama 和 LangChain 构建本地 MCP 客户端

&#x1f31f; 什么是 MCP&#xff1f; 模型控制协议 (MCP) 是一种创新的协议&#xff0c;旨在无缝连接 AI 模型与应用程序。 MCP 是一个开源协议&#xff0c;它标准化了我们的 LLM 应用程序连接所需工具和数据源并与之协作的方式。 可以把它想象成你的 AI 模型 和想要使用它…...

vue3 定时器-定义全局方法 vue+ts

1.创建ts文件 路径&#xff1a;src/utils/timer.ts 完整代码&#xff1a; import { onUnmounted } from vuetype TimerCallback (...args: any[]) > voidexport function useGlobalTimer() {const timers: Map<number, NodeJS.Timeout> new Map()// 创建定时器con…...

Matlab | matlab常用命令总结

常用命令 一、 基础操作与环境二、 矩阵与数组操作(核心)三、 绘图与可视化四、 编程与控制流五、 符号计算 (Symbolic Math Toolbox)六、 文件与数据 I/O七、 常用函数类别重要提示这是一份 MATLAB 常用命令和功能的总结,涵盖了基础操作、矩阵运算、绘图、编程和文件处理等…...

React---day11

14.4 react-redux第三方库 提供connect、thunk之类的函数 以获取一个banner数据为例子 store&#xff1a; 我们在使用异步的时候理应是要使用中间件的&#xff0c;但是configureStore 已经自动集成了 redux-thunk&#xff0c;注意action里面要返回函数 import { configureS…...

sipsak:SIP瑞士军刀!全参数详细教程!Kali Linux教程!

简介 sipsak 是一个面向会话初始协议 (SIP) 应用程序开发人员和管理员的小型命令行工具。它可以用于对 SIP 应用程序和设备进行一些简单的测试。 sipsak 是一款 SIP 压力和诊断实用程序。它通过 sip-uri 向服务器发送 SIP 请求&#xff0c;并检查收到的响应。它以以下模式之一…...

【网络安全】开源系统getshell漏洞挖掘

审计过程&#xff1a; 在入口文件admin/index.php中&#xff1a; 用户可以通过m,c,a等参数控制加载的文件和方法&#xff0c;在app/system/entrance.php中存在重点代码&#xff1a; 当M_TYPE system并且M_MODULE include时&#xff0c;会设置常量PATH_OWN_FILE为PATH_APP.M_T…...

为什么要创建 Vue 实例

核心原因:Vue 需要一个「控制中心」来驱动整个应用 你可以把 Vue 实例想象成你应用的**「大脑」或「引擎」。它负责协调模板、数据、逻辑和行为,将它们变成一个活的、可交互的应用**。没有这个实例,你的代码只是一堆静态的 HTML、JavaScript 变量和函数,无法「活」起来。 …...

C语言中提供的第三方库之哈希表实现

一. 简介 前面一篇文章简单学习了C语言中第三方库&#xff08;uthash库&#xff09;提供对哈希表的操作&#xff0c;文章如下&#xff1a; C语言中提供的第三方库uthash常用接口-CSDN博客 本文简单学习一下第三方库 uthash库对哈希表的操作。 二. uthash库哈希表操作示例 u…...