1.全局自定义指令 directive
import { createApp } from 'vue'
import App from './App.vue'
import { createPinia } from 'pinia';
const app = createApp(App)
/ 全局自定义指令
app.directive('Lyon', {
created() {
console.log('created')
},
beforeMount() {
console.log('beforeMount')
},
updated() {
console.log('updated')
},
unmounted() {
console.log('unmounted')
},
mounted(ele, binding, vNode) {
console.log('mounted')
console.log(binding)
console.log(vNode)
ele.focus()
ele.value = binding.value
}
})
app.mount('#app')
组件setup 语法糖 下内部自定义指令
const vLyonDir = {
mounted(ele: HTMLElement, binding:DirectiveBinding) {
console.log(ele)
ele.focus()
ele.value = binding.value
},
}
<input type="number" v-lyon-dir= 9999>
非setup 语法糖下组件自定义指令(修饰符,指令参数|动态参数:arg, binding:可以是数组对象 )
import {defineComponent, DirectiveBinding } from 'vue'
export default defineComponent({
setup() {
return {
lyon: 1111,
name: 'ly'
}
},
directives: {
lyon: {
mounted(ele:HTMLElement, binding: DirectiveBinding) {
console.log(ele)
console.log(binding.value)
console.log(binding.modifiers)
console.log(binding?.arg)
},
}
}
})
<template lang="">
<input type="number" v-lyon:[name].modifier1.modifier2 = '[1111, 222]'>
<button @click= "clickBtn">点醒你</button>
</template>