自定义指令的意义:对普通DOM元素进行底层操作;
作用 :可以获取到底层的dom,拿到想要的节点,从而进行操作;
实际应用:可以通过指令知道什么时候dom创建完成,从而进行依赖dom的库的初始化工作;
11111
结果:
代码中:div标签里的 hello 是自定义的指令,在dom中用的时候就是:v-指令;
定义hello指令,通过Vue.directive(“指令名”,{}),和定义组件形式一样;
inserted()生命周期函数:
触发时间:节点第一次插入到父节点(页面)中会触发,只会触发这一次;
用法:inserted(接收dom节点的形参,接收指令参数的形参)
如何拿到底层dom节点呢:
inserted函数的参数el:
指令里面也可以传参数:
11111//yellow是参数
11111//yellow是状态
inserted接收参数: binding
11111
Vue.directive("hello",{//指令的生命周期函数inserted(el,binding){console.log("inserted",binding)el.style.background = binding.value}})
el.style.background = binding.value
update():更新时期的生命周期函数
触发事件:当指令的参数或者状态有所更新就会触发
用法:update(接收dom节点的形参,接收指令参数的形参)
update(el,binding){console.log("update",binding)el.style.background = binding.value}
完整代码:
11111
结果:
以上两个生命周期函数有简写方式:
Vue.directive("hello",()=>{//每次插入或者更新dom就会操作一次el.style.background = binding.value}),
就是把两个生命周期函数放在一起写;
当然这种简写方式只有不强调单独一个生命周期函数时,可以使用;让只想用单独的inserted函数这样的写法就不好了。