0%

自定义指令

自定义指令

1.语法:

(1) 局部指令:

​ directives:{指令名:配置对象}或 directives:{指令名:回调函数}

(2)全局指令:

Vue.directive(指令名,配置对象)或Vue.directive(指令名,回调函数)

2.配置对象中常用的回调

created:在绑定元素的 attribute 或事件监听器被应用之前调用。在指令需要附加在普通的 v-on 事件监听器调用前的事件监听器中时,这很有用。`

beforeMount:当指令第一次绑定到元素并且在挂载父组件之前调用。mounted:指令与元素成功绑定时使用

updated:在包含组件的 VNode 及其子组件的 VNode 更新后调用。

beforeUpdate:在更新包含组件的 VNode 之前调用。

beforeUnmount:在卸载绑定元素的父组件之前调用

unmounted:当指令与元素解除绑定且父组件已卸载时,只调用一次。

PS:指令定义时不加v-,,但是使用时要加v-

指令名如果是多个单词要用kebab-case命名方式,不要用camelCase命名

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
 <div id="root">
<h3>{{name}}</h3>
<h3>当前n:<span v-text="n">{{n}}</span></h3>
<h3>放大10倍后的n:<span v-big="n">{{n}}</span></h3>
<button @click="n++">点我n+1</button>
<br>
<input type="text" v-fbind:value="n">
</div>
<script src="https://unpkg.com/vue@next"></script>
<script>
Vue.createApp({
data(){
return{
name:"ann",
n:1
}
},
directives: {
//v-big被调用:指令与元素成功绑定时(一上来) 指令所在模板重新编译时
big(element,binding){
element.innerText=binding.value*10

},
/*fbind(element,binding){
element.value=binding.value
element.focus()
},*/
fbind:{
// 当被绑定的元素挂载到 DOM 中时……
mounted(element,binding){
console.log(this)
element.value=binding.value
element.focus()

},
updated(element,binding){
element.value=binding.value

}

}


}
}).mount("#root")

</script>