Vue自定义指令

使用Vue.directive();

1.直接自定义名称 :red

<!DOCTYPE html>  
<html lang="en">  
<head>  
    <meta charset="UTF-8">  
    <title></title>  
    <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0">  
    <meta name="apple-mobile-web-app-capable" content="yes">  
    <meta name="apple-mobile-web-app-status-bar-style" content="black">  
    <style>  
  
    </style>  
    <script src="vue.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>  

效果:

 

2.使用v-名称,在data中设置属性

<!DOCTYPE html>  
<html lang="en">  
<head>  
    <meta charset="UTF-8">  
    <title></title>  
    <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0">  
    <meta name="apple-mobile-web-app-capable" content="yes">  
    <meta name="apple-mobile-web-app-status-bar-style" content="black">  
    <style>  
  
    </style>  
    <script src="vue.js"></script>  
    <script>  
        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>  

 

3.使用v-名称,直接设置属性名称

<!DOCTYPE html>  
<html lang="en">  
<head>  
    <meta charset="UTF-8">  
    <title></title>  
    <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0">  
    <meta name="apple-mobile-web-app-capable" content="yes">  
    <meta name="apple-mobile-web-app-status-bar-style" content="black">  
    <style>  
  
    </style>  
    <script src="vue.js"></script>  
    <script>  
        Vue.directive('red',function(color){  
            this.el.style.background=color;  
        });  
  
        window.onload=function(){  
            var vm=new Vue({  
                el:'#box'  
            });  
        };  
  
    </script>  
</head>  
<body>  
    <div id="box">  
        <span v-red="'blue'">  
            asdfasd  
        </span>  
    </div>  
  
</body>  
</html>  

效果:

 

 

5.Vue自定义拖拽指令

<!DOCTYPE html>  
<html lang="en">  
<head>  
    <meta charset="UTF-8">  
    <title></title>  
    <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0">  
    <meta name="apple-mobile-web-app-capable" content="yes">  
    <meta name="apple-mobile-web-app-status-bar-style" content="black">  
    <style>  
    </style>  
    <script src="vue.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>  

 

posted @ 2017-10-22 11:57  逗比煎饼侠  阅读(119)  评论(0编辑  收藏  举报