自定义一个指令,directives配置项,json对象,a代表指令名,无需带v-,一律小写,如果多个单词构成中间加-,参数b是自定义指令所在标签的真实dom,c是指令和dom之间的绑定关系,函数实在绑定时执行。创建的一个元素,msg是Vue实例的data中的数据,c对象的value就是msg的值。执行时机就是第一次绑定,亦或模板重新解析,模板解析成虚拟dom的过程。a自定义指令也可以是json对象。里面有几个函数,在特定的时间,就会执行函数内代码。bind配置项,inserte配置项,update配置项。在特定时机执行里面得是方法。全局配置自定义指令,配置项如果油-要加引号。 Vue.directive('指令名',函数/对象)指令名无需写v-。自定义指令不能v-指令名:参数=""。
//指令没参数
<h1 v-a='msg'></h1>
directives:{
a:function(b,c){
}
}
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<script src="../js/vue (1).js"></script>
</head>
<body>
<div id="app">
<div v-txe-anger>123</div>
<div >
<input type=text v-anger="123">
</input>
</div>
</div>
<script>
const vm= new Vue({
data:{
msg:'23'
} ,
el:'#app',
methods:{
},
directives:{
'txe-anger':function(a,b){
alert(b.value)
// a.innerText=b.value
//1真实dom的style属性,要找父子标签,插入了页面才有
// 2.<div v-txe-anger="msg"></div> msg可不写。
a.style.color='red'
},//3个钩子函数,时机
anger:{
bind(a,b){
a.value=b.value
}
,inserted(a,b){
a.parentNode.style.background='blue'
},
update(){
a.value=b.value
}
}
}
})
</script>
</body>
</html>