zoukankan      html  css  js  c++  java
  • 03Vue事件

    Vue提供了事件的绑定,方法写在methods对象中。

    绑定dom中有两种方法:

      方法一:v-on:click/dblclcick/mouseOver/mouseOut=“方法名”等等

    这种和JQuery的事件差不多,在原生态js中去掉了on。

      方法二:@click/dblclcick/mouseOver/mouseOut="方法名"。

    相对于方法一,将v-on:替代为@。还是比较好用的。

    事件修饰符:stop:阻止事件冒泡。事件冒泡指的是点击子元素,父元素的点击事件也被触发了

          prevent:阻止默认事件触发。比如a标签默认点击会跳转,这时可以阻止这个触发

          capture:使用捕获模式。html默认事件从里到外进行传播,捕获模式则会从外到进行触发

          self:只有当前元素能够触发,既不能通过传播的方式

          once:只能触发一次

    这几个修饰符可以串联修饰,例如java中的修饰符

      例如给a标签:

    <div>
            <a href="1.jpg" @click.prevent.stop.capture.self></a>
        </div>
    View Code

    在Vue2.0也多添加几个按键和鼠标修饰符,这样不用记一些键码。

    注意一下,虽然Vue可以让组件自定义事件,但是不要使用驼峰命名法,html会将大写的字母变为小写,

    可能导致出不来结果。Vue2.0好像已经不支持绑定的body上。

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Vue事件</title>
        <script type="text/javascript" src="https://cdn.bootcss.com/vue/2.4.4/vue.min.js"></script>
        
    </head>
    <body>
        <div id=box>
            <p>原始的方式</p>
            <input type="button" value="点击一下" @click="say1" />
            <hr>
    
            <p>Vue事件绑定之一 v-on:click/dblclick/...</p>
            <input type="button" value="Vue事件绑定之一" v-on:click="say1">
            <hr>
    
            <p>Vue事件绑定之二 @click/dblclick/...</p>
            <input type="button" value="Vue事件绑定之二" @click="say1">
            <hr>
    
            <p>Vue解决事件冒泡 </p>
            <div @click="say1">
            <input type="button" value="未解决事件冒泡" @click="say1">
            </div>
            <div @click="say2">
            <p>原始方式解决事件冒泡 </p>
            <input type="button" value="原始方式解决事件冒泡" @click="say2($event)">
            </div>
            <div @click="say3">
            <p>Vue方式解决事件冒泡 </p>
            <input type="button" value="Vue方式解决事件冒泡" @click.stop="say3()">
            </div>
    
            <hr>
            <p>html默认触发的事件</p>
            <a href="http://cpc.people.com.cn/NMediaFile/2017/1018/MAIN201710181352077766232230363.jpg">进入十九大</a>
            <p>html $event阻止默认触发的事件</p>
            <a href="http://cpc.people.com.cn/NMediaFile/2017/1018/MAIN201710181352077766232230363.jpg" @click="say4($event)">进入十九大</a>
            <p>html Vue阻止默认触发的事件</p>
            <a href="http://cpc.people.com.cn/NMediaFile/2017/1018/MAIN201710181352077766232230363.jpg" @click.prevent="say5()">进入十九大</a>
        </div>
    </body>
    <script type="text/javascript">
        new Vue({
            el:"#box",
            data:{},
            methods:{
            say1:function(){
                console.log(this);
                alert("hello v-on");
            },
            say2:function(ev){
                alert("原始方式解决事件冒泡");
                ev.cancelBubble=true;
    
            },
            say3:function(){
                alert("Vue方式解决事件冒泡");
            },
            say4:function(ev){
                console.log(this);
                alert("阻止默认触发事件");
                ev.preventDefault();
            },
            say5:function(){
                console.log(this);
                alert("vue阻止默认触发事件");
            }    
            }
        });
        
        </script>
    </html>
    View Code
  • 相关阅读:
    安装sqlserver后 服务启动过几秒就自动停止
    MVC使用基架添加控制器出现的错误:无法检索XXX的元数据
    HTML:模拟链接被按下,在新标签页打开页面,不使用window.open(可能被拦截)
    解决 NDP40-KB2468871不能安装
    十进制转二进制and位运算符
    行万里路
    grunt使用小记之uglify:最全的uglify使用DEMO
    grunt使用小记之开篇:grunt概述
    HTTP权威指南阅读笔记五:Web服务器
    ActionScript 3.0入门:Hello World、文件读写、数据存储(SharedObject)、与JS互调
  • 原文地址:https://www.cnblogs.com/bufferflies/p/7724151.html
Copyright © 2011-2022 走看看