vue2+3 —— Day5/6
自定义指令
自定义指令
需求:当页面加载时,让元素获取焦点(一进页面,输入框就获取焦点)
常规操作:操作dom “dom元素.focus()”
获取dom元素还要用ref 和 $refs
<input ref="inp" type="text">
mounted(){
this.$refs.inp.focus()
}
处在mounted这个钩子时,模板已经渲染完了
全局注册指令
所有组件内均可使用
语法:
Vue.directive('指令名',{
"inserted" (el) {
el.focus()
}
})
inserted:指令的生命周期钩子;指令所绑定的元素被添加到页面时会自动调用
el是指令所绑定的元素
局部注册指令
只能在所在组件内使用
语法:
directives:{
"指令名":{
inserted() {
el.focus()
}
}
}
使用:<input v-指令名 type="text">
指令的值
需求:实现一个color指令 —— 当传入不同颜色的时候,标签的文字颜色也跟着变成对应的颜色
语法:
- v-指令名 = "指令值" (通过等号绑定指令的值)
<div v-color = "color">我是内容</div>
- binging.value 拿指令值
- 通过update钩子,监听指令值的变化,进行dom更新操作 (数据变化,视图自动更新)
directives:{
color:{
inserted (el,binding) {
el.style.color = binding.value
},
update (el,binding) {
el.style.color = binding.value
}
}
}
el:指令所绑定的元素
update:指令值修改时会触发update函数