VUE课程---23、自定义指令

一、总结

一句话总结:

vue中指令可以自定义,可以自定义全局指令和局部指令两种,局部指令就在vue实例的directives上添加,全局指令可以直接Vue.directive(指令,回调函数)



1. 注册全局指令
Vue.directive('my-directive', function(el, binding){
el.innerHTML = binding.value.toUpperCase()
})
2. 注册局部指令
directives : {
'my-directive' : {
bind (el, binding) {
el.innerHTML = binding.value.toUpperCase()
}
}
}
3. 使用指令
v-my-directive='xxx'


 

 

1、定义vue全局指令实例?

全局指令定义就是Vue.directive('upper-text',回调函数),使用就和普通指令一样



使用
<p v-upper-text="msg"></p>

定义
Vue.directive('upper-text',function (el,binding) {
el.textContent=binding.value.toUpperCase();
});


 

 

2、定义vue局部指令实例?

局部指令的定义用vue实例的directives属性,使用和普通指令一样



使用
<p v-lower-text="msg"></p>

定义
directives:{
'lower-text':function (el,binding) {
el.textContent=binding.value.toLowerCase();
}
}


 

 

 

二、自定义指令

博客对应课程的视频位置:

 

 



1 <!DOCTYPE html>
2 <html lang="en">
3 <head>
4 <meta charset="UTF-8">
5 <title>自定义指令</title>
6 </head>
7 <body>
8 <!--
9
10 1. 注册全局指令
11 Vue.directive('my-directive', function(el, binding){
12 el.innerHTML = binding.value.toUpperCase()
13 })
14 2. 注册局部指令
15 directives : {
16 'my-directive' : {
17 bind (el, binding) {
18 el.innerHTML = binding.value.toUpperCase()
19 }
20 }
21 }
22 3. 使用指令
23 v-my-directive='xxx'
24
25 -->
26 <!--
27 需求: 自定义2个指令
28 1. 功能类型于v-text, 但转换为全大写,v-upper-text
29 2. 功能类型于v-text, 但转换为全小写,v-lower-text
30 -->
31 <div id="app1">
32 <p v-upper-text="msg"></p>
33 <p v-lower-text="msg"></p>
34 </div>
35 <div id="app2">
36 <p v-upper-text="msg"></p>
37 <!-- <p v-lower-text="msg"></p>-->
38 </div>
39 <script src="../js/vue.js"></script>
40 <script>
41 Vue.directive('upper-text',function (el,binding) {
42 console.log(el);
43 console.log(binding);
44 el.textContent=binding.value.toUpperCase();
45 });
46 let vm1 = new Vue({
47 el: '#app1',
48 data: {
49 msg: 'Just do it.'
50 },
51 directives:{
52 'lower-text':function (el,binding) {
53 el.textContent=binding.value.toLowerCase();
54 }
55 }
56 });
57 let vm2 = new Vue({
58 el: '#app2',
59 data: {
60 msg: 'Great minds think alike.'
61 }
62 });
63 console.log(vm1);
64 </script>
65 </body>
66 </html>


 

 

VUE课程---23、自定义指令_html