zoukankan      html  css  js  c++  java
  • vue教程2-07 自定义指令

    vue教程2-07 自定义指令

    自定义指令:
        一、属性:
    
        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'
                    }
                });
            };

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

    <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'
                    }
                });
            };

    自定义指令写法三:

    <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></title>
        <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="{'100px', height:'100px', background:'blue', position:'absolute', right:0, top:0}"></div>
            <div v-drag :style="{'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></title>
        <style>
            zns-red{
                100px;
                background: gray;
                height:100px;
                display: block;
            }
        </style>
        <script src="vue.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>
  • 相关阅读:
    基于GDAL库,读取.grd文件(以海洋地形数据为例)Java版
    基于GDAL库,读取.nc文件(以海洋表温数据为例)C++版
    基于UDP传输协议局域网文件接收软件设计 Java版
    基于Oracle数据库登陆界面及功能实现 Java版
    ORM中的Model与DDD中的DomainModel
    探讨DDD中角色权限与DCI的使用
    哈工大软件构造 复习
    python列表的基本用法
    matlab简单的超越方程求解近似值
    MATLAB一些常用的function
  • 原文地址:https://www.cnblogs.com/baiyangyuanzi/p/6774627.html
Copyright © 2011-2022 走看看