在vue中可以在dom元素中添加一些指令如 v-for循环 ,v-on绑定事件,v-bind动态绑定类名或者属性等
在vue中也可以创建自定义指令来做一些需要操作dom的业务
// 自定义组件的实例化
Vue.directive('自定义指令的名', {
// 在自定义指令里面的几个钩子函数
bind: function () {}, // 指令第一次绑定到元素时调用。在这里可以进行一次性的初始化设置。只触发一次
inserted: function () {}, // 当绑定的元素插入dom中的时候会触发
update: function () {}, // 所在组件的 VNode 更新时调用
componentUpdated: function () {}, 指令所在组件的 VNode 及其子 VNode 全部更新后调用
unbind: function () {}//指令与元素解绑时调用,只能触发一次
})
在这钩子函数中有几个参数
el:指的是当前绑定的元素,可以用来操作dom。
binding:只是一个对象,可以用来完成数据的交互
例子 v-my-directive:foo.b.c='3*7' 可以通过binding.属性 来获取想要的参数
(1)name:这个获取到的就是v-后面的指令名my-directive
(2)value:这个获取到的就是等号后面的值21
(3)oldValue:指令绑定的前一个值,只在 update 和 componentUpdated 钩子中可用
(4)expression:这个获取的就是等号后面的表达式3*7
(5)arg:这个获取到的参数就是:后面的foo
(6)modifiers:这个获取到的参数就式.后面的参数,是以对象的方式展现的{b:true,c:true}
vnode:Vue 编译生成的虚拟节点。
oldVnode:上一个虚拟节点,仅在 update 和 componentUpdated 钩子中可用。