自定义指令
文章发布较早,内容可能过时,阅读注意甄别。
# 代码
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>自定义指令</title>
<script src="../js/vue.js"></script>
</head>
<body>
<!--
需求1:定义一个v-big指令,和v-text功能类似,但会把绑定的数值放大10倍
需求1:定义一个v-fbind指令,和v-bind类似,但可以让其绑定的input元素默认获取焦点。
-->
<!-- 准备好一个容器 -->
<div id="root">
<h2>当前的n值为:<span v-text="n"></span></h2>
<h2>放大10倍后的n值为:<span v-big="n"></span></h2>
<button @click="n++">点我给n加1</button>
<hr />
<input type="text" v-fbind:value="n" />
</div>
<script type="text/javascript">
Vue.config.productionTip = false; // 禁用提示
new Vue({
el: "#root",
data: {
n: 1,
},
directives: {
// big函数何时会被调用? 1.指令与元素成功绑定时(一上来),2.指令所在的模板被重新解析时
big(element, binding) {
console.log("big");
element.innerText = binding.value * 10;
},
fbind: {
bind(element, binding) {
element.value = binding.value;
},
inserted(element, binding) {
element.focus();
},
update(element, binding) {
element.value = binding.value;
element.focus();
},
},
},
});
</script>
</body>
</html>
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
48
49
50
51
52
53
54
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
48
49
50
51
52
53
54
# 笔记
自定义指令总结:
- 定义语法
- 局部指令
new Vue({ directives:{指令名:配置对象} 或 directives:{指令名:回调函数} })
1
2
3 - 全局指令
Vue.directives(指令名:配置对象)
或Vue.directives(指令名:回调函数)
- 配置对象中常用的 3 个回调:
bind:
指令与元素被插入页面时调用inserted:
指令所在元素被插入页面时调用update:
指令所在模板结构被重新解析时调用
- 备注
- 指令定义时不加
v-
,使用时要加v-
- 指令名如果是多个单词,要使用 kebab-case 命名方式,不要用 camelCase 命名
上次更新: 2024/11/19, 23:11:42