震惊!!!一眼就能看懂的自定义组件directives方法!!!!

news/2024/7/19 15:17:55 标签: vue, js, javascript, html5, css

震惊!!!一眼就能看懂的自定义组件directives方法!!!!

Vue中内置了很多的指令,如v-model、v-show、v-html等,但是有时候这些指令并不能满足我们,或者说我们想为元素附加一些特别的功能,这时候,我们就需要用到vue中一个很强大的功能了—自定义指令。
自定义组件时对底层的DOM元素进行操作,所以不能盲目使用
(1)了解自定义组件的钩子函数:
一个指令定义对象可以提供如下几个钩子函数 (均为可选):

bind:只调用一次,指令第一次绑定到元素时调用。在这里可以进行一次性的初始化设置。

inserted:被绑定元素插入父节点时调用 (仅保证父节点存在,但不一定已被插入文档中)。

update:所在组件的 VNode 更新时调用,但是可能发生在其子 VNode 更新之前。指令的值可能发生了改变,也可能没有。但是你可以通过比较更新前后的值来忽略不必要的模板更新 (详细的钩子函数参数见下)。

componentUpdated:指令所在组件的 VNode 及其子 VNode 全部更新后调用。

unbind:只调用一次,指令与元素解绑时调用。

(2)钩子函数参数
el:指令所绑定的元素,可以用来直接操作 DOM。
binding:一个对象,包含以下 property:
name:指令名,不包括 v- 前缀。
value:指令的绑定值,例如:v-my-directive=“1 + 1” 中,绑定值为 2。
oldValue:指令绑定的前一个值,仅在 update 和 componentUpdated 钩子中可用。无论值是否改变都可用。
expression:字符串形式的指令表达式。例如 v-my-directive=“1 + 1” 中,表达式为 “1 + 1”。
arg:传给指令的参数,可选。例如 v-my-directive:foo 中,参数为 “foo”。
modifiers:一个包含修饰符的对象。例如:v-my-directive.foo.bar 中,修饰符对象为 { foo: true, bar: true }。
vnode:Vue 编译生成的虚拟节点。移步 VNode API 来了解更多详情。
oldVnode:上一个虚拟节点,仅在 update 和 componentUpdated 钩子中可用。
除了 el 之外,其它参数都应该是只读的,切勿进行修改。如果需要在钩子之间共享数据,建议通过元素的 dataset 来进行。

全局组件:
//全局自定义指令写法,在main.js
Vue.directive(‘color’,{
bind:function(el,binding){
el.style.color=binding.value;
}
})

//局部自定义指定写法,在要使用的组件中定义
directives:{
‘fontsize’:{//设置字体大小
bind:function(el,binding){
el.style.fontSize=binding.value;
//el.style.fontSize = parseInt(binding.value) + ‘px’
}
}
}
在要使用的组件标签中:

钩子函数的传参

看懂了互关点赞一手啊!


http://www.niftyadmin.cn/n/884552.html

相关文章

震惊!!!一眼就能看懂的vue自带的transition组件!!!!

代码可以直接复制到项目中使用&#xff0c;真实有效&#xff0c;有用记得点赞互粉哦 <template><div class"home"><link href"https://cdn.jsdelivr.net/npm/animate.css3.5.1" rel"stylesheet" type"text/css">&l…

OpenCV函数精讲之 -- imread()函数

一、目标 学习imread()函数正确读入图像的方式&#xff0c;imread()用不对&#xff0c;对以后的图像处理有很大的影响。 有时候图片是灰度图&#xff0c;但是你用imread()读入后它就变成了彩色图&#xff0c;只不过它的三个通道的值是一样的。 灰度图是单通道的。彩色图是三通…

word中 图、表、公式的自动编号功能

话外篇&#xff1a;word 中 自己常用的 快捷键 Ctrl A : 全选 Ctrl F: 查找 Ctrl b: 加粗 Ctrl i : 倾斜 写文档时会涉及图、表、公式的顺序调整、增加或删除&#xff0c;刚刚调整好的图表的编号就会被打乱&#xff0c;有的时候还会漏调&#xff0c;从而导致即使耗费了…

震惊!!!一眼就能看懂的CSS页面布局方式!!!!

代码复制都可以直接使用&#xff01;有帮助记得点赞互粉加收藏&#xff01; 1.理解盒子模型 border-sizing(怪异盒子)&#xff1a;内容宽高margin外边距左右 content-box(标准盒子)&#xff1a;内容宽高margin外边距左右padding内边距左右border边框 一个盒子由外到内可以分成…

矩阵分解(0)-- 矩阵相关概念及性质总结

1.逆矩阵 注意&#xff1a; 非奇异矩阵与以下命题等价&#xff1a; 1.1 求法1&#xff1a;伴随矩阵 补充&#xff1a;代数余子式求法实例&#xff1a; 矩阵行列式&#xff1a; 行列式计算&#xff1a; 1.2 求法2&#xff1a;初等变换 矩阵初等变换操作&#xff1a; 1.3 逆矩阵性…

遇到github,gitlab无权限访问仓库,需要配置ssh密钥

当我们换新电脑时&#xff0c;去拉github,gitlab的项目时&#xff0c;都会出现没有权限访问该仓库的问题&#xff0c;这个时候我们就需要去配置我们的ssh密钥 问题如下所示&#xff1a; gitgithub.com: Permission denied (publickey). fatal: 无法读取远程仓库。请确认您有正…

矩阵分解(1)-- 矩阵分解之LU、LDLT、Cholesky分解

1. 分类 矩阵分解&#xff08;decomposition, factorization&#xff09;是多半将矩阵拆解为数个三角形矩阵&#xff08;triangular matrix&#xff09;&#xff0c;依使用目的的不同&#xff0c;可分为几类。 与线性方程解法相关的矩阵分解 LU分解奇异值分解QR分解极分解特…

vue中$set用法及其源码的底层原理

vue中$set用法及其源码的底层原理 在我们开发过程中&#xff0c;经常会遇到&#xff0c;为一个数组或者对象data中添加一个属性&#xff0c;点击按钮后发现&#xff0c;控制台打印明明对象中已经出现了这个属性&#xff0c;视图层却并没有更新该数据&#xff0c;这是因为受到J…