• Vue(四)事件和属性


    1. 事件
    1.1 事件简写
    • v-on:click=""
    • 简写方式 @click=""
            <button v-on:click="show">点我</button>
            <button @click="show">点我</button>
    1.2 事件对象$event
    • 包含事件相关信息,如事件源、事件类型、偏移量
    • target、type、offsetx
    //js  methods:{}

    print(e){
       // console.log(e);
        console.log(e.target.innerHTML); //DOM对象
        console.log(this);
    }
    <button @click="print($event)">Click Me</button>
    1.3 事件冒泡
    • 阻止事件冒泡:
    • a)原生js方式,依赖于事件对象
    • b)vue方式,不依赖于事件对象
    • @click.stop
    1.4 事件默认行为
    • 阻止默认行为:
    • a)原生js方式,依赖于事件对象
        <script>
            window.onload=function(){
                let vm=new Vue({
                    el:'#itany',
                    methods:{ 
                        show(){
                            console.log(111);
                            // e.stopPropagation();
                        },
                        print(){
                            console.log(222);
                        },
                        write(){
                            console.log(333);
                        },
                        study(){
                            console.log(444);
                            // e.preventDefault();
                        }
                    }
                });
            }
        </script>
    
    -----------------------------------------------------------------------------------------
    <div id="itany"> <div @click="write"> <p @click="print"> <!-- <button @click="show($event)">点我</button> --> <button @click.stop="show">点我</button> </p> </div> <hr> <!-- <a href="#" @click="study($event)">俺是链接</a> --> <a href="#" @click.prevent="study">俺是链接</a> </div>
    1.5 键盘事件
    • 回车:@keydown.13 或@keydown.enter
    • 上:@keydown.38 或@keydown.up
    • 默认没有@keydown.a/b/c...事件,可以自定义键盘事件,也称为自定义键码或自定义键位别名
        <script>
            /**
             * 自定义键位别名
             */
            Vue.config.keyCodes={
                a:65,
                f1:112
            }
    
            window.onload=function(){
                let vm=new Vue({
                    el:'#itany',
                    methods:{ 
                        show(e){
                            console.log(e.keyCode);
                            if(e.keyCode==13){
                                console.log('您按了回车');
                            }
                        },
                        print(){
                            // console.log('您按了回车');
                            // console.log('您按了方向键上');
                            console.log('11111');
                        }
                    }
                });
            }
        </script>

    -------------------------------------------------------------------------------------------------------
    <div id="itany"> <!-- 键盘事件:@keydown、@keypress、@keyup --> <!-- 用户名:<input type="text" @keydown="show($event)"> --> <!-- 简化按键的判断 --> <!-- 用户名:<input type="text" @keydown="show($event)"> --> <!-- 用户名:<input type="text" @keydown.13="print"> --> <!-- 用户名:<input type="text" @keydown.enter="print"> --> <!-- 用户名:<input type="text" @keydown.up="print"> --> 用户名:<input type="text" @keydown.f1="print"> <!-- 事件修饰符 --> <button @click.once="print">只触发一次</button> </div>
    1.6 事件修饰符
    • .stop - 调用 event.stopPropagation()。
    • .prevent - 调用 event.preventDefault()。
    • .{keyCode | keyAlias} - 只当事件是从特定键触发时才触发回调。
    • .native - 监听组件根元素的原生事件。
    • .once - 只触发一次回调。
    2. 属性
     
    2.1 属性绑定和属性的简写
    • v-bind 用于属性绑定, v-bind:属性=""
    • 属性的简写:
    • v-bind:src="" 简写为 :src=""
        <script>
            window.onload=function(){
                let vm=new Vue({
                    el:'#itany',
                    data:{
                        url:'https://ss0.bdstatic.com/5aV1bjqh_Q23odCf/static/superman/img/logo/bd_logo1_31bdc765.png',
                        w:'200px',
                        h:'100px'
                    }
                });
            }
        </script>

    ----------------------------------------------------------------------

    <div id="itany"> <!-- <img src="{{url}}"> --> <!-- 可以直接访问vue中的数据,不需要使用{{}} --> <!-- <img v-bind:src="url"> --> <img :src="url" :width="w" :height="h"> </div>
    2.2 class和style属性
    • 绑定class和style属性时语法比较复杂:
    <script>
            window.onload=function(){
                let vm=new Vue({
                    el:'#itany',
                    data:{
                        bb:'aa',
                        dd:'cc',
                        flag:true,
                        num:-2,
                        hello:{aa:true,cc:true},
                        xx:{color:'blue',fontSize:'30px'},
                        yy:{backgroundColor:'#ff7300'}
                    }
                });
            }
        </script>
        <style>
            .aa{
                color:red;
                font-size:20px;
            }
            .cc{
                background-color:#ccc;
            }
        </style>    

    --------------------------------------------------------------------------------- <div id="itany"> <!-- class属性 --> <!-- <p class="aa">南京网博</p> --> <!-- 可以访问,普通css方式 --> <!-- <p :class="aa">南京网博</p> --> <!-- 不可以,Vue的属性绑定时不能直接css样式 --> <!-- 方式1:变量形式 --> <!-- <p :class="bb">南京网博</p> --> <!-- 方式2:数组形式,同时引用多个 --> <!-- <p :class="[bb,dd]">南京网博</p> --> <!-- 方式3:json形式,常用!!! --> <!-- <p :class="{aa:true,cc:flag}">南京网博</p> --> <!-- <p :class="{aa:num>0}">南京网博</p> --> <!-- 方式4:变量引用json形式 --> <!-- <p :class="hello">南京网博</p> --> <!-- style属性 --> <p :style="[xx,yy]">itany</p> </div>



  • 相关阅读:
    设计模式学习总结
    算法时间复杂度和空间复杂度表示
    SQLite简单使用
    接口,组合和继承的想法
    二叉树的学习
    Oracle 常用命令大汇总
    Oracle 最常用功能函数经典汇总
    oracle 常用command
    历史最牛演讲:Oracle总裁Yale演讲全文中英文对照
    深入abstract class和interface
  • 原文地址:https://www.cnblogs.com/yulingjia/p/8038657.html
Copyright © 2020-2023  润新知