Vue2.0代码复用和抽象主要是组件形式,有时候还是需要对DOM进行一些操作,因此自定义指令是一个不错选择。自定义指令的注册方式和组件类似,有分为全局注册和局部注册。
//全局注册 Vue.directive("自定义指令名称不要带v-",{/* 参数 */}) //局部注册 directives:{ 自定义指令名称不带v-:{ /* 参数 */ } }
参数部分则是任意可选的钩子函数(hook function):
bind 只调用一次的bind,也就是指令第一次绑定到元素的时候的调用,用来初始化设置
inserted 绑定完指令的元素插入到父节点的时候调用,父节点必须存在
updated 组件的虚拟Node更新的时候调用
componentUpdated 指令所在的组件更新后调用
unbind 指令和元素解绑的时候调用
钩子函数有如下参数
hook function(el,binding,vnode,oldnode)
el 指代绑定的元素,可以直接操作DOM
binding 是一个对象,包含的属性:name 指令的名称,value 指令的绑定值 ,oldValue 绑定的旧值,只在updated和componentUpdated钩子里面可用,expression 字符串形式的指令表达式,
arg 传给指令的参数,modifiers 是包含修饰符的对象。
directives: { // 指令的定义v-focus focus: { inserted: function (el) { el.focus() } } }
<input v-focus>