来源于技术胖的视屏讲解
1.全局API的概念:在构造器外部用Vue提供给我们的Api函数来定义新的功能
2.v-directive自定义指令
2.1效果图
2.2代码
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<meta http-equiv="X-UA-Compatible" content="ie=edge" />
<title>directive</title>
<script src="../assets/js/vue.js" type="text/javascript"></script>
</head>
<body>
<h1>directive 自定义指令</h1>
<hr />
<div id="app">
<div v-fanrenfeng="color" >{{num}}</div>
<p><button @click="add">Add</button></p>
</div>
<script>
//el----所绑定的dom元素,这里为div
// binding--
Vue.directive('fanrenfeng',function(el,binding){
console.log(el);
console.log(binding);
console.log(binding.name);
console.log(binding.value)
console.log(binding.expression)
el.style="color:"+binding.value;
})
var app = new Vue({
el:'#app',
data:{
num:10,
color:'red'
},
methods:{
add(){
this.num++
}
}
})
</script>
</body>
</html>
2.3自定义组件的生命周期
代码
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<meta http-equiv="X-UA-Compatible" content="ie=edge" />
<title>directive</title>
<script src="../assets/js/vue.js" type="text/javascript"></script>
</head>
<body>
<h1>directive 自定义指令</h1>
<hr />
<div id="app">
<div v-fanrenfeng="color" >{{num}}</div>
<p><button @click="add">Add</button></p>
</div>
<p>
<button onclick="unbind()">解绑</button>
</p>
<script>
function unbind(){
app.$destroy()
}
//el----所绑定的dom元素,这里为div
// binding--
Vue.directive('fanrenfeng',{
bind:function(el,binding){//被绑定
el.style="color:"+binding.value
console.log('1-bind')
},
inserted:function(){//绑定到节点
console.log('2-inserted')
},
update:function(){//组件更新
console.log('3-update')
},
componentUpdated:function(){//组件更新完成
console.log('4-componentUpdated')
},
unbind:function(){//解绑
console.log('5-unbind')
}
})
var app = new Vue({
el:'#app',
data:{
num:10,
color:'red'
},
methods:{
add(){
this.num++
}
}
})
</script>
</body>
</html>
页面初始效果图
当点击Add按钮时,页面效果
当点击解绑时,页面效果,此时再点击Add按钮,数字已经不会增加了。
在指令的生命周期中写样式
页面效果图