1.vue2中自定义全局指令
① 定义
// 注册一个全局自定义指令 `v-focus`
Vue.directive('focus', {
// 当被绑定的元素插入到 DOM 中时……
inserted: function (el) {
// 聚焦元素
el.focus()
}
})
② 使用
<input v-foucs="'xxxx'" />
2.vue3中自定义全局指令
① 定义
// app是Vue实例。 e.g: app = createApp()
app.directive('指令名', {
// 省略其他生命周期钩子函数
// el: 使用了指令的dom
// binding.value: v-指令名="binding.value就是这里表达式的值"
mounted (el, binding) {
console.log(el, binding.value)
}
})
② 使用
<元素 v-指令名="xxx" />
3.在vue3中以插件的格式定义全局指令
① 定义
// 定义全局指令
export default {
install (app) {
// app是Vue实例。 e.g: app = createApp()
app.directive('指令名', {
// 省略其他生命周期钩子函数
// el: 使用了指令的dom
// binding.value: v-指令名="binding.value就是这里表达式的值"
mounted (el, binding) {
console.log(el, binding.value)
}
})
}
}
② 在main.js中注册插件
+ import defineDirective from '@/directives'
createApp(App).use(store).use(router).use(componentPlugin)
+ .use(defineDirective)
.mount('#app')
4.总结
vue2和vue3的指令:
相同点:指令的应用场景,原理是一致的;
不同点:生命周期钩子函数名,指令定义的格式不一样。
vue2: Vue.directive()
vue3: const app = createApp(); app.diretive()
原文链接:https://blog.csdn.net/qq_42651173/article/details/118917334