JavaScript

超轻量级php框架startmvc

vue自定义指令用法经典实例小结

更新时间:2020-08-18 03:18:01 作者:startmvc
本文实例总结了vue自定义指令用法。分享给大家供大家参考,具体如下:自定义指令:一、

本文实例总结了vue自定义指令用法。分享给大家供大家参考,具体如下:

自定义指令:

一、属性:


Vue.directive(指令名称,function(参数){
 this.el -> 原生DOM元素
});


<div v-red="参数"></div>

指令名称:     v-red  ->  red

* 注意: 必须以 v-开头

拖拽:

二、自定义元素指令:(用处不大)


Vue.elementDirective('zns-red',{
 bind:function(){
 this.el.style.background='red';
 }
});

自定义指令写法一:


<div id="box">
 <span v-red>
 asdfasd
 </span>
</div>


Vue.directive('red',function(){
 this.el.style.background='red';
});
window.onload=function(){
 var vm=new Vue({
 el:'#box',
 data:{
 msg:'welcome'
 }
 });
};

测试示例:


<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>www.jb51.net 自定义指令写法一</title>
<script src="https://cdn.bootcss.com/vue/1.0.4/vue.min.js"></script>
<script>
Vue.directive('red',function(){
 this.el.style.background='red';
});
window.onload=function(){
 var vm=new Vue({
 el:'#box',
 data:{
 msg:'welcome'
 }
 });
};
</script>
</head>
<body>
<div id="box">
 <span v-red>
 asdfasd
 </span>
</div>
</body>
</html>

自定义指令写法二:推荐写法


<div id="box">
 <span v-red="a">
 asdfasd
 </span>
</div>


//这里的color可以传参
Vue.directive('red',function(color){
 this.el.style.background=color;
});
window.onload=function(){
 var vm=new Vue({
 el:'#box',
 data:{
 a:'blue'
 }
 });
};

测试示例:


<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>www.jb51.net 自定义指令写法二</title>
<script src="https://cdn.bootcss.com/vue/1.0.4/vue.min.js"></script>
<script>
//这里的color可以传参
Vue.directive('red',function(color){
 this.el.style.background=color;
});
window.onload=function(){
 var vm=new Vue({
 el:'#box',
 data:{
 a:'blue'
 }
 });
};
</script>
</head>
<body>
<div id="box">
 <span v-red="a">
 asdfasd
 </span>
</div>
</body>
</html>

自定义指令写法三:


<div id="box">
 <span v-red>
 asdfasd
 </span>
</div>

Vue.directive('red',{
 bind:function(){
 this.el.style.background='red';
 }
});
window.onload=function(){
 var vm=new Vue({
 el:'#box'
 });
};

自定义指令:拖拽drag


<!DOCTYPE html>
<html lang="en">
<head>
 <meta charset="UTF-8">
 <title>www.jb51.net 自定义指令:拖拽drag</title>
 <script src="https://cdn.bootcss.com/vue/1.0.4/vue.min.js"></script>
 <script>
 Vue.directive('drag',function(){
 var oDiv=this.el;
 oDiv.onmousedown=function(ev){
 var disX=ev.clientX-oDiv.offsetLeft;
 var disY=ev.clientY-oDiv.offsetTop;
 document.onmousemove=function(ev){
 var l=ev.clientX-disX;
 var t=ev.clientY-disY;
 oDiv.style.left=l+'px';
 oDiv.style.top=t+'px';
 };
 document.onmouseup=function(){
 document.onmousemove=null;
 document.onmouseup=null;
 };
 };
 });
 window.onload=function(){
 var vm=new Vue({
 el:'#box',
 data:{
 msg:'welcome'
 }
 });
 };
 </script>
</head>
<body>
 <div id="box">
 <div v-drag :style="{width:'100px', height:'100px', background:'blue', position:'absolute', right:0, top:0}"></div>
 <div v-drag :style="{width:'100px', height:'100px', background:'red', position:'absolute', left:0, top:0}"></div>
 </div>
</body>
</html>

自定义元素指令


<!DOCTYPE html>
<html lang="en">
<head>
 <meta charset="UTF-8">
 <title>www.jb51.net 自定义元素指令</title>
 <style>
 zns-red{
 width:100px;
 background: gray;
 height:100px;
 display: block;
 }
 </style>
 <script src="https://cdn.bootcss.com/vue/1.0.4/vue.min.js"></script>
 <script>
 Vue.elementDirective('zns-red',{
 bind:function(){
 this.el.style.background='red';
 }
 });
 window.onload=function(){
 var vm=new Vue({
 el:'#box',
 data:{
 a:'blue'
 }
 });
 };
 </script>
</head>
<body>
 <div id="box">
 <zns-red></zns-red>
 </div>
</body>
</html>

感兴趣的朋友可以使用在线HTML/CSS/JavaScript代码运行工具:http://tools.jb51.net/code/HtmlJsRun测试上述代码运行效果。

希望本文所述对大家vue.js程序设计有所帮助。

vue 自定义指令