vue自定义指令
vue中除了核心功能内置的指令外,也允许注册自定义指令。有的情况下,对普通DOM元素进行底层操作,这时候就会用到自定义指令。自定义指令又分为全局的自定义指令和局部自定义指令。
全局自定义指令 全局注册主要是用过Vue.directive 方法进行注册 Vue.directive 第一个参数是指令的名字(不需要写上v-前缀),第二个参数可以是对象数据。
Vue.directive('focus', {
inserted: function (el) {
el.focus()
}
})
使用:
<input type="text" v-focus />
局部自定义指令 局部注册通过在组件选项对象中设置directives 属性
directives: {
focus: {
inserted: function (el) {
el.focus()
}
}
}
使用:
<input type="text" v-focus />
自定义指令的钩子函数
钩子函数: bind : 只调用一次,指令第一次绑定到元素时调用 inserted : 被绑定元素插入父节点时调用 update : 所有组件的虚拟节点VNode更新时调用 componentUpdated : 指令所在组件的虚拟节点VNode以及子虚拟节点更新之前 unbind : 只调用一次,指令与元素解绑时调用 钩子函数的参数:el绑定元素,binding一个对象 包含指令的值value,vnode虚拟节点,oldVnode旧的虚拟节点等
应用场景 关于自定义组件还有很多应用场景,如:拖拽指令、输入框防抖、图片懒加载、权限校验等等应用场景。
举个小栗子: 详细请看:拖拽 更新中。。。
|