zi定义指令

news2024/11/25 16:29:39

hello,我是小索奇,精心制作的Vue系列持续发放,涵盖大量的经验和示例,如果对您有用,可以点赞收藏哈~

自定义指令

自定义指令就是自己定义的指令,是对 DOM 元素进行底层操作封装 ,程序化地控制 DOM,拓展额外的功能

全局定义

Vue.directive(指令名字, definition)

  • 指令名:不包括v-前缀,使用时候包括v-,v-指令名
  • definition: 对象,包含指令逻辑
// definition 就代表下面的函数,
Vue.directive('focus', function(el, binding) {
  // el 是绑定的 DOM 元素
})

局部定义

new Vue({
  directives: {
    'focus': {

    }
  }
})

directives: {
// 直接写成函数形式,部分细节问题会处理不了
  focus(el, binding) {

  }  
}

指令definition对象可以访问以下参数:

  • el: 指令绑定的DOM元素,可以直接操作
  • binding: 对象,包含指令信息
    • name: 指令名
    • value: 指令绑定的值
    • expression: 绑定表达式字符串
    • arg: 参数
    • modifiers: 修饰符
  • vnode: Vue编译的虚拟节点
  • oldVnode: 之前的虚拟节点

示例1

创建一个自定义指令

 <p v-color>鼠标悬停我,我会变色!</p>

在这里,v-color 就是我们的自定义指令它的名字是由我们来决定的,这个名字后面我们会用到

创建自定义指令的逻辑

<script>
  directives: {
  // 写成对象形式,可以定义更多函数
    color: {
      bind(el,binding) {
      	console.log(el)
		console.log(binding)
        el.addEventListener('mouseover', () => {
          el.style.color = 'red'; // 鼠标悬停时变红色
        });

        el.addEventListener('mouseout', () => {
          el.style.color = ''; // 鼠标移出恢复原色
        });
      }
    }
}
</script>

bind 钩子函数和其他一些钩子函数中,el 是HTMLElement真实DOM元素一个必传参数,表示绑定了指令的 DOM 元素我们可以通过操作 el 来修改元素的样式、属性等

binding 是一个包含了指令相关信息的对象

我们告诉Vue当使用 v-color 指令时,应该执行的逻辑是:当鼠标悬停在元素上时,把文字变成红色;当鼠标移出时,恢复原来的颜色

我们已经在模板中使用了自定义指令 v--color,Vue会自动找到这个指令,并且执行我们之前定义的逻辑

鼠标悬停变色

el就代表绑定的元素,这里绑定的是h1

image-20230827183910809

value是什么?

当我给v-color制定值的时候,它就出现了,所以binding.value就是我们绑定的value

image-20230827184646143

image-20230827184604525

image-20230827185002751

示例2

<button @click="n++">点我n+1</button>
// 如果指令名有多个字母组成,要求使用烤肉串方式,如:v-focus-bind,相应的key应该加上引号
<input type="text" v-fbind:value="n">

directives: {
				//函数是在 1.指令第一次绑定到元素时触发2.指令所在的模板被重新解析时触发
				// fbind(element,binding){
				// },
				// 写成对象形式,对象中可以定义更多函数,也可以写更多细节
				fbind:{
					//指令与元素成功绑定时,一上来立即会被调用,和函数形式调用时机一样fbind(){}
					bind(el,binding){
						el.value = binding.value
					},
					//指令所在元素被插入页面时
					inserted(el,binding){
						el.focus()
					},
					//指令所在的模板被重新解析时
					update(el,binding){
						el.value = binding.value
					}
				}
			}

全局形式

 Vue.directive('fbind',{
			bind(element,binding){
				element.value = binding.value
			},
			inserted(element,binding){
				element.focus()
			},
			update(element,binding){
				element.value = binding.value
			}

image-20230827195833643

定义成函数形式,相当于对象中的bind和update,没有inserted的简写,如需要更多细节操作可以定义对象形式

拓展钩子函数

Vue 自定义指令的常见钩子函数包括:

  • bind: 指令第一次绑定到元素时触发
  • inserted: 元素被插入到父元素时触发
  • update: 指令所在的模板被重新解析时触发
  • componentUpdated: 组件更新完成时触发
  • unbind: 指令与元素解绑时触发

这些钩子函数名称是 Vue 所识别的,如果我们在自定义指令中使用这些名称,Vue 就会在相应的时机调用我们的指令逻辑
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1260311.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

医院电子病历编辑器源码(支持云端SaaS服务)

电子病历系统基于云端SaaS服务的方式&#xff0c;采用B/S&#xff08;Browser/Server&#xff09;架构提供&#xff0c;采用前后端分离模式开发和部署。使用用户通过浏览器即能访问&#xff0c;无需关注系统的部署、维护、升级等问题&#xff0c;系统充分考虑了模板化、 配置化…

Linux操作系统使用及C高级编程-D17D18编译与调试

编译 当有线程创建时编译&#xff1a;gcc test.c -o test -lpthread 分文件编写时主要是分为&#xff1a;.c&#xff08;函数声明的具体实现&#xff09;、.h&#xff08;说明性文件&#xff1a;#define 结构体共用体 声明&#xff09;、.c(main) 条件编译 一般情况下&#x…

【Linux】初识重定向(输入输出)

一切皆文件 这是Linux的设计理念&#xff0c;因为这个理念的存在我们可以使用统一的方法对待不同的东西&#xff0c;&#xff0c;这也是为什么嵌入式之类的会需要Linux&#xff0c;因为用LInux来操纵硬件真的很方便 另外我们下文也会都基于这个理念来命名&#xff0c; 比如&am…

用做Excel的思维去做BI报表,大材小用了!

最近看到一个姐妹吐槽说公司上了BI后&#xff0c;反而没有以前Excel用得顺手了。这不可能&#xff0c;这不科学&#xff01;怀着求知心点进去一看&#xff0c;这位姐妹居然是在用做Excel的思维去做BI报表&#xff0c;这就很难评了&#xff01; Excel和BI报表&#xff0c;那是两…

MSTP实验

目录 一、实验拓扑 二、实验要求 三、实验步骤 1、创建vlan 2、创建端口组&#xff0c;放通vlan 3、配置MSTP 4、配置主备奋根 一、实验拓扑 二、实验要求 1、所有交换机上创建vlan10&#xff0c;vlan20&#xff0c;vlan30和vlan40 2、所有交换机之间的端口配置为Trunk…

【斗破年番】萧炎斩杀蝎山,活捉魂殿铁护法,救小医仙身中魔斑毒

Hello,小伙伴们&#xff0c;我是拾荒君。 《斗破苍穹年番》第72集的国漫已经更新了。这一集中&#xff0c;蝎毕岩靠着秘术的加成暂时压制住了小医仙。在激烈的交战中&#xff0c;小医仙不得不解开自身的厄难毒体&#xff0c;而每解开一次&#xff0c;她就离死亡更近一步。 萧炎…

java--子类构造器的特点

1.子类构造器的特点 子类的全部构造器&#xff0c;都会先调用父类的构造器&#xff0c;再执行自己。 2.子类构造器是如何实现调用父类构造器的 ①默认情况下&#xff0c;子类全部构造器的第一行代码都是super()(写不写都有)&#xff0c;它会调用父类的无参数构造器。 ②如果…

EfficientViT:具有级联群体注意力的内存高效Transformer

EfficientViT: Memory Efficient Vision Transformer with Cascaded Group Attention 1、介绍2、使用 Vision Transformer 加快速度2.1 内存效率2.2 计算效率2.3 参数效率 3、Efficient Vision Transformer3.1 EfficientViT 构建模块3.3 EfficientViT 网络架构 4、实验5、结论 …

什么是可重入锁

程序员的公众号&#xff1a;源1024&#xff0c;获取更多资料&#xff0c;无加密无套路&#xff01; 最近整理了一份大厂面试资料《史上最全大厂面试题》&#xff0c;Springboot、微服务、算法、数据结构、Zookeeper、Mybatis、Dubbo、linux、Kafka、Elasticsearch、数据库等等 …

给国外客户价格报低了怎么办

前一段时间有一个单子的货发出去了&#xff0c;被朋友提醒才发现自己报错了价格&#xff0c;造成了亏损&#xff0c;而报错价格的原因并不是自己看错了或者是抄错了价格&#xff0c;而是自己的脑子里记错了产品的价格列表。 如果不是朋友善意的提醒&#xff0c;大概我会一直错…

Current request is not a multipart request问题排查

概述 在应用工程里看到如下被标记为deprecated的代码&#xff0c;这对有代码洁癖的我而言是无法忍受的&#xff1a; row.getCell(10).setCellType(Cell.CELL_TYPE_STRING); String hospital row.getCell(0).getStringCellValue();对应的poi版本号&#xff1f;是的&#xff…

基本数据结构二叉树(2)

目录 3.二叉树的顺序结构及实现 3.1 二叉树的顺序结构 3.2 堆的概念及结构 3.3 堆的实现 3.2.1 堆向下调整算法 3.2.2堆的创建 3.2.3 建堆时间复杂度 3.2.4 堆的插入 3.2.5 堆的删除 3.2.6 堆的代码实现 3.4 堆的应用 3.4.1 堆排序 3.4.2 TOP-K问题 3.二叉树的顺序…

陆正耀卖奶茶,是库迪不行了吗?

文 | 智能相对论 作者 | 胡静婕 咖啡还没“玩”明白&#xff0c;陆正耀又要开始卖奶茶了。 11月23日&#xff0c;陆正耀创立的库迪咖啡确认&#xff0c;其奶茶品牌“茶猫”系库迪咖啡旗下第二品牌&#xff0c;将于2024年1月正式上市&#xff0c;公司仍将采取风险共担的联营模…

软著项目推荐 深度学习中文汉字识别

文章目录 0 前言1 数据集合2 网络构建3 模型训练4 模型性能评估5 文字预测6 最后 0 前言 &#x1f525; 优质竞赛项目系列&#xff0c;今天要分享的是 &#x1f6a9; 深度学习中文汉字识别 该项目较为新颖&#xff0c;适合作为竞赛课题方向&#xff0c;学长非常推荐&#xf…

浅谈UML的概念和模型之UML九种图

1、用例图&#xff08;use case diagrams&#xff09; 【概念】描述用户需求&#xff0c;从用户的角度描述系统的功能 【描述方式】椭圆表示某个用例&#xff1b;人形符号表示角色 【目的】帮组开发团队以一种可视化的方式理解系统的功能需求 【用例图】 2、静态图 类图&…

第二十六章 解读IoU、GIoU、DIoU、CIoU、EIoU 5大评价指标

目录 一、简介 二、IoU&#xff08;Intersection over Union&#xff09; 三、GIoU&#xff08;Generalized IoU&#xff09; 四、DIoU&#xff08;Distance-IoU&#xff09; 五、CIoU(Complete-IoU) 六、EIoU(Efficient-IoU) 七、pytorch代码实现 八、总结 一、简介 …

使用DeepBlueCLI对Windows日志进行取证(小记)

什么是Windows日志取证 Windows日志取证是指通过分析和收集Windows操作系统生成的日志信息&#xff0c;以获取关于系统活动、用户行为、安全事件等方面的数据 工具使用 工具介绍 DeepBlueCLI 是一个用于检测 Windows 系统中的安全事件和威胁的 PowerShell 脚本工具 工具下…

探究Kafka原理-4.API使用

&#x1f44f;作者简介&#xff1a;大家好&#xff0c;我是爱吃芝士的土豆倪&#xff0c;24届校招生Java选手&#xff0c;很高兴认识大家&#x1f4d5;系列专栏&#xff1a;Spring源码、JUC源码、Kafka原理&#x1f525;如果感觉博主的文章还不错的话&#xff0c;请&#x1f44…

Kotlin学习之集合

原文链接 Kotlin Collections 现代的软件一般比较复杂&#xff0c;程序语言中的基本数据类型往往不能满足需要&#xff0c;除了基本的数据类型以外&#xff0c;还有对象的容器也非常的重要&#xff0c;比如线性容器&#xff08;数组&#xff0c;列表和Set&#xff09;和二维容…

Adversarial Attack and Defense on Graph Data: A Survey(2022 IEEE Trans)

Adversarial Attack and Defense on Graph Data: A Survey----《图数据的对抗性攻击和防御&#xff1a;综述》 图对抗攻击论文数据库&#xff1a; https://github.com/safe-graph/graph-adversarial-learning-literature 摘要 深度神经网络&#xff08;DNN&#xff09;已广泛应…