美文网首页
指令(自定义指令)

指令(自定义指令)

作者: 九尾的日志 | 来源:发表于2018-08-18 20:49 被阅读0次

    Directive指令的本质是对DOM元素的处理

    <!DOCTYPE html>
    <html>
        <head>
            <meta charset="utf-8">
            <title>指令</title>
            <script src="vue.js"></script>
        </head>
        <body>
            
            <!-- 指令是特殊标记,其本质是对DOM元素的处理 -->
            
            <!-- 使用系统指令和自定义指令 -->
            
            <div id="app">
                
                <!-- 数据绑定 -->
                <input v-model="message"/>
                <input v-model.number="age" type="number">
                
                <!--
                    
                //输入修饰符
                .lazy - 取代 input 监听 change 事件
                .number - 输入字符串转为数字
                .trim - 输入首尾空格过滤-->
                
                
                <!-- 属性插值 -->
                <p>{{message}}</p>
                
                
                <!-- 插入文本-->
                <p v-text="value"></p>
                
                
                <!-- 插入html代码-->
                <p v-html="html"></p>
                
                
                <!-- 显示或隐藏元素 -->
                <p v-show="status">元素显隐</p>
                
                
                <!-- 数据改变时禁止渲染 -->
                <p v-once="">{{message}}</p>
                
                
                <!-- 跳过编译 -->
                <p v-pre>{{message}}</p>
                
                
                <!-- 条件语句 -->
                <p v-if  ="status">status为真时显示if</p>
                <p v-else="status">status为假时显示else</p>
                
                
                <!-- 循环语句 -->
                <p v-for='i in list'>{{i}}</p>
                
                
                <!-- 绑定 html属性 -->
                <img v-bind:src="url" />
                <p v-bind:class="yellow"></p>
                <p v-bind:class="[yellow,red]"></p>
                <p v-bind:style="{backgroundColor:'#000',width:'200px',height:'200px'}"></p>
                
                
                <!-- 绑定 dom事件 -->
                <button v-on:click = "onclick">点击</button>
                <input  v-on:keyup.enter = "onboard">
                
                <!--
                    
                //事件修饰符
                .stop    - 调用 event.stopPropagation()。
                .prevent - 调用 event.preventDefault()。
                .capture - 添加事件侦听器时使用 capture 模式。
                .self    - 只当事件是从侦听器绑定的元素本身触发时才触发回调。
                .{keyCode | keyAlias} - 只当事件是从特定键触发时才触发回调。
                .native  - 监听组件根元素的原生事件。
                .once    - 只触发一次回调。
                .left    - (2.2.0) 只当点击鼠标左键时触发。
                .right   - (2.2.0) 只当点击鼠标右键时触发。
                .middle  - (2.2.0) 只当点击鼠标中键时触发。
                .passive - (2.3.0) 以 { passive: true } 模式添加侦听器
                
                //按键修饰符
                .keyCode值
                .enter
                .tab
                .delete (捕获“删除”和“退格”键)
                .esc
                .space
                .up
                .down
                .left
                .right-->
                
                
                <!-- 使用自定义指令 -->
                <p v-order:value='message'></p>
                
            </div>
            
            
            <script>
                
                //自定义指令
                Vue.directive('order',{
                    
                    bind:function(el,binding){
                        
                        //这里的el指的就是当前指令绑定的DOM元素;
                        console.log(el);
                        
                        //返回的是一个对象,包含有以下属性:
                        console.log(binding);
                        // 1.name :指令名 
                        // 2.value:指令的绑定值 
                        // 3.expression:指令绑定值的字符串形式 
                        // 4.arg:传递给指令的参数 
                        // 5.modifiers:一个对象,包含当前的指令的修饰符 
                        el.innerText = '自定义指令:'+binding.value;
                    }
                })
                
                var vm = new Vue({
                    
                    //DOM节点
                    el:'#app',
                    
                    
                    //数据
                    data:{
                        message:'请输入用户名',
                        value  :'数据值',
                        age    :18,
                        html   :'<div>插入html代码替换原有</div>',
                        status :true,
                        list   :[1,2,3],
                        url    :'http://#',
                        yellow :'yellow',
                        red    :'red'
                    },
                    
                    
                    //侦听数据
                    watch:{
                        
                        message:function(value){
                            
                            console.log(value)
                        }
                    },
                    
                    //函数
                    methods:{
                        
                        onclick:function(e){
                            
                            console.log(e.target)
                        },
                        
                        onboard:function(e){
                            
                            console.log(e.target)
                        }
                    }
                })
            
            </script>
            
            <style>
                
                .yellow {
                    width: 200px;
                    height: 200px;
                    background: #ff0;
                }
                
                .red {
                    width: 200px;
                    height: 200px;
                    background: red;
                }
                
            </style>
            
        </body>
    </html>
    
    

    相关文章

      网友评论

          本文标题:指令(自定义指令)

          本文链接:https://www.haomeiwen.com/subject/pofqiftx.html