网站首页 > 技术文章 正文
前言
v-model 和 v-show vue的内置指令,大家都使用过了,那如果要创建一个自定义的指令,要如何处理呢?
注册指令
- 注册
// 全局注册
Vue.directive('demo', {
inserted: function(el) {
el.focus();
}
});
// 局部注册
directives: {
demo: {
inserted: function(el) {
el.focus();
}
}
}
- 在模板中任何元素上可以使用指令
<input v-demo/>
Hook 函数
- bind 只调用一次,指令第一次绑定到元素时调用。在这里可以进行一次性的初始化设置
- inserted 被绑定元素插入父节点时调用 (仅保证父节点存在,但不一定已被插入文档中)
- update 所在组件的 VNode 更新时调用,但是可能发生在其子 VNode 更新之前。指令的值可能发生了改变,也可能没有。但是你可以通过比较更新前后的值来忽略不必要的模板更新
- componentUpdated 指令所在组件的 VNode 及其子 VNode 全部更新后调用
- unbind 只调用一次,指令与元素解绑时调用
参数
- el 指令所绑定的元素,可以用来直接操作DOM
- binding 一个对象,包含以下属性
- name 指定名
- value 指令绑定的值
- oldValue 指令绑定的前一个值
- expression 字符串形式的指令表达式
- arg 传给指令的参数
- modifiers 修饰符对象
- vNode Vue编译生成的虚拟节点
- oldVnode 上一个虚拟节点
动态指令参数
指令的参数可以是动态的,如 v-demo:[argument]="value" , argument 参数是可以根据实例数据进行更新的,如下的代码
Vue.directive("demo", {
bind: function (el, binding) {
el.style["color"] = binding.value;
}
});
<span v-demo="textColor">demo directive</span>
<button @click="setColor">文字修改为绿色</button>
// 修改颜色为绿色
setColor() {
this.textColor = "green";
},
以上的代码,会在初始绑定时,给当前绑定的组件元素文本设置成红色
但你会发现,点击按钮,不会有效,那是因为上面的指定是在bind时机点,更新时不会再触发,需要绑定update,可以简写成,在bind和update时都会触发相同的行为
Vue.directive("demo", function (el, binding) {
console.log(binding)
el.style["color"] = binding.value;
}
);
点击按钮则可看到效果
猜你喜欢
- 2024-10-21 Django 自定义管理命令:从入门到高级
- 2024-10-21 VUE自定义指令 自定义指令的应用场景有哪些?
- 2024-10-21 c4d自定义界面命令——把常用工具摆出来,工作效率大大提高
- 2024-10-21 Vue3.0 如何写自定义指令 vue自定义指令两种方式
- 2024-10-21 权限应用-按钮权限标识利用自定义指令控制按钮
- 2024-10-21 关于Angularjs中自定义指令一些有价值的细节和技巧
- 2024-10-21 thinkphp自定义指令 thinkphp自定义错误页面
- 2024-10-21 TCL语言学习笔记(4) -自定义命令(过程/函数)和命名空间
- 2024-10-21 vue-12 自定义指令 vue自定义指令案例
- 2024-10-21 Linux 创建自定义命令 linux创建自己的命令
你 发表评论:
欢迎- 最近发表
-
- 吴谨言专访大反转!痛批耍大牌后竟翻红,六公主七连发力显真诚
- 港股2月28日物业股涨幅榜:CHINAOVSPPT涨1.72%位居首位
- 港股2月28日物业股午盘:CHINAOVSPPT涨1.72%位居首位
- 港股3月2日物业股涨幅榜:CHINAOVSPPT涨1.03%位居首位
- 港股3月2日物业股午盘:CHINAOVSPPT涨1.03%
- 天赋与心痛的背后:邓鸣贺成长悲剧引发的深刻反思
- 冯小刚女儿徐朵追星范丞丞 同框合照曝光惹人羡,回应网友尽显亲民
- “资本大佬”王冉:51岁娶小17岁童瑶,并承诺余生为娇妻保驾护航
- 港股3月2日物业股午盘:CHINAOVSPPT涨1.03%位居首位
- 「IT之家开箱」vivo S15 图赏:双镜云窗,盛夏风光
- 标签列表
-
- oraclesql优化 (66)
- 类的加载机制 (75)
- feignclient (62)
- 一致性hash算法 (71)
- dockfile (66)
- 锁机制 (57)
- javaresponse (60)
- 查看hive版本 (59)
- phpworkerman (57)
- spark算子 (58)
- vue双向绑定的原理 (68)
- springbootget请求 (58)
- docker网络三种模式 (67)
- spring控制反转 (71)
- data:image/jpeg (69)
- base64 (69)
- java分页 (64)
- kibanadocker (60)
- qabstracttablemodel (62)
- java生成pdf文件 (69)
- deletelater (62)
- com.aspose.words (58)
- android.mk (62)
- qopengl (73)
- epoch_millis (61)
本文暂时没有评论,来添加一个吧(●'◡'●)