美文网首页Web
v-on之事件监听

v-on之事件监听

作者: 瑟闻风倾 | 来源:发表于2020-07-08 11:28 被阅读0次

常用事件有:点击、拖拽和键盘事件等

  • v-on:click(@click) ——>注册点击事件
  • v-on:keydown(@keydown) ——>注册键盘事件
  • v-on:keyup(@keyup) ——>注册键盘事件
  • v-on:mousedown(@mousedown) ——>注册鼠标事件
  • v-on:mouseover(@mouseover) ——>注册鼠标事件
  • v-on:submit(@submit) ——>注册表单事件

(1) v-on 的基本使用及语法糖

eg1:v-on注册点击事件

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="utf-8">
    <title>Document</title>
    <script src="vue1026.js"></script>
</head>
<body>
    <div id="app">
        {{name}}
        <button v-on:click="change">点击改变视图显示</button>
        <button @click="change">语法糖—简写</button>
    </div>
</body>
<script>
    var vm = new Vue({
        el:"#app",
        data:{
            name:"liy"
        },
        methods:{
            change:function(){
                this.name += "-yang"
            }
        }
    });
</script>
</html>

eg2:v-on注册鼠标键盘事件

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="utf-8">
    <title>Document</title>
    <script type="text/javascript" src="vue1026.js"></script>
</head>
<body>
    <div id="app">
        <button v-on:click="submit">提交</button>
        <div>
            <span>v-on:click可简化为@click,其他事件同理将前缀v-on:简化为@</span>
            <button @click="submit">提交</button>
        </div>
        
        <input type="text" placeholder="v-on:keydown" v-on:keydown="kd">
        <input type="text" placeholder=" @keydown" @keydown="kd">
        <input type="text" placeholder=" @keyup" @keyup="kp">
        <input type="text" placeholder=" @mousedown" @mousedown="md">
        <input type="text" placeholder=" @mouseover" @mouseover="mo">

    </div>
</body>
<script type="text/javascript">
    var vm = new Vue({
        el:"#app",
        data:{

        },
        methods:{
            submit:function(){
                alert("触发了click事件:点击了提交按钮");
            },
            kd:function(){
                alert("触发了keydown事件:点击了键盘按键");
            },
            kp:function(){
                alert("触发了keyup事件:点击了键盘按键");
            },
            md:function(){
                alert("触发了mousedown事件:鼠标按下");
            },
            mo:function(){
                alert("触发了mouseover事件:鼠标经过");
            }
        }
    });
</script>
</html>

(2) v-on 之 参数传递

methods定义的方法供@click调用时:

  • 若无需参数,方法后的()可以省略;
  • 若需传参数,同时需要event(浏览器生成的event事件对象)时,可通过$event 传入事件。
  • 如果方法本身有一个参数,默认会将原生事件event参数传递进去
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="utf-8">
    <title>Document</title>
    <script type="text/javascript" src="../first/vue1026.js"></script>
</head>
<body>
    <div id="app">
        <!-- 1. 事件调用的方法无参数 -->
        <button @click="btn1Click()">按钮1</button>
        <button @click="btn1Click">按钮1</button>
        <!-- 2. 事件定义时,事件调用方法时省略来小括号,但是方法定义时需要一个参数时:Vue会默认将浏览器生成的event事件对象作为参数传入到方法 -->
        <button @click="btn2Click">按钮2</button>
        <!-- 3. 方法定义时,我们需要event对象,同时又需要其他参数时:调用时通过$event来手动获取到浏览器参数的event对象 -->
        <button @click="btn3Click('liy',$event)">按钮3</button>
    </div>
</body>
<script type="text/javascript">
    var vm = new Vue({
        el:"#app",
        data:{
            
        },
        methods:{
            btn1Click(){
                console.log('无参');
            },
            btn2Click(event){
                console.log(event);
            },
            btn3Click(name,event){
                console.log(name);
                console.log(event);
            },
        }
    });
</script>
</html>

(3) v-on 之 事件修饰符

  • prevent(阻止默认行为) 和 stop(阻止冒泡)
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="utf-8">
    <title>Document</title>
    <script type="text/javascript" src="vue1026.js"></script>
</head>
<body>
    <div id="app">
        <!-- type="submit"的按钮,点击时会自动提交表单,在表单上加@submit事件并用事件修饰符prevent来阻止表单默认提交事件 -->
        <form @submit.prevent action="http://www.baidu.com" method="get">
            <input type="text" id="username" v-model="user.uname">
            <input type="password" id="pwd" v-model="user.upwd">
            <input type="submit" @click="formSubmit" value="表单提交">
        </form>

        <!-- 多个div中都注册了事件,则可能导致冒泡,可使用事件修饰符stop(v-on:**.stop或@**.stop)来避免冒泡,如:@click.stop -->
        <div @click="father">
            <span>通过事件修饰符stop来阻止冒泡事件</span>
            <br/>
            <button  @click.stop="child">点击按钮</button>
        </div>
    </div>
</body>
<script type="text/javascript">
    var vm = new Vue({
        el:"#app",
        data:{
            user:{
                uname:"",
                upwd:""
            }

        },
        methods:{
            formSubmit:function(){
                alert("自定义表单提交事件:" + "username=" + this.user.uname + "," + "password=" + this.user.upwd);
            },
            father:function(){
                console.log("触发父节点的点击事件");
            },
            child:function(){
                console.log("触发子节点的点击事件");
            }
        }
    });
</script>
</html>
  • keycode|keyAlias(键盘事件修饰符)

当事件从特定键触发时才触发回调。参考:Vue-按键修饰符(默认按键修饰符和自定义按键修饰符).

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="utf-8">
    <title>Document</title>
    <script type="text/javascript" src="../first/vue1026.js"></script>
</head>
<body>
    <div id="app">
        <input @keyup.13="keyup()">
        <input @keyup.enter="keyup()">
    </div>
</body>
<script type="text/javascript">
    var vm = new Vue({
        el:"#app",
        data:{
            
        },
        methods:{
            keyup(){
                console.log('键盘事件');
            }
        }
    });
</script>
</html>

  • once(只触发一次回调)
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="utf-8">
    <title>Document</title>
    <script type="text/javascript" src="../first/vue1026.js"></script>
</head>
<body>
    <div id="app">
        <button @click.once="btnClick()">按钮</button>
    </div>
</body>
<script type="text/javascript">
    var vm = new Vue({
        el:"#app",
        data:{
            
        },
        methods:{
            btnClick(){
                console.log('点击');
            }
        }
    });
</script>
</html>

  • native(监听组件根元素的原生事件)

自定义组件时使用

相关文章

  • Vue2.0学习笔记v-on(5)

    v-on:绑定事件监听v-on 就是监听事件,可以用v-on指令监听DOM事件来触发一些javascript代码。...

  • 指令

    一、事件监听:v-on指令 监听用户发生的事件,比如点击、拖拽、键盘事件等等,以便和用户交互。使用v-on指令 v...

  • 说说 Vue.js 中的 v-on 事件指令

    v-on 事件指令用于绑定事件。 1 基础用法 v-on 指令绑定事件后,就会监听相应的事件。 html: 注意:...

  • vue 事件处理-06

    事件监听 v-on:click = "执行的js语句或者函数" 获取原始Dom事件v-on:click="warn...

  • Vue学习的第八天

    事件处理 监听事件 可以用v-on指令监听DOM事件 Add var vm = new Vue({ el:"#...

  • Vue.js从0到1:v-on绑定事件 指令

    代码演示 v-on监听事件 ...

  • 事件处理

    监听事件 可以用v-on指令监听DOM事件,并在触发运行一些js代码。示例: 事件处理方法 v-on可以接收一个方...

  • vue常用指令介绍v-on:click,v-bind:

    v-on:事件监听,语法糖 @click, v-on:click (@click):绑定点击事件,执行相对于的方法...

  • VUE基础之事件处理(浅析VUE事件修饰符)

    VUE基础之事件处理 v-on:something用于绑定事件监听器,监听DOM变化来触发事件(something...

  • 08-vue.js-事件监听

    事件处理 监听事件 v-on 指令监听 DOM 事件,并在触发时运行一些 JavaScript 代码。 结果: A...

网友评论

    本文标题:v-on之事件监听

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