vue中除了核心功能内置的指令外,也允许注册自定义指令。有的情况下,对普通 DOM 元素进行底层操作,这时候就会用到自定义指令。自定义指令又分为全局的自定义指令和局部自定义指令。
全局自定义指令
全局注册主要是在main.js里面通过Vue.directive
方法进行注册
Vue.directive
(‘第一个参数是一个对象,这个对象上有钩子函数’)
// 注册一个全局自定义指令 `v-focus`
Vue.directive('focus', {
// 当被绑定的元素插入到 DOM 中时……
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:被绑定元素插入父节点时调用
undate:所有组件的虚拟节点VNode更新时调用
componentUpdated:指令所在组件的虚拟节点VNode以及子虚拟节点更新之前
unbind:只调用一次,指令与元素解绑时调用