vuejs 指令之 v-on

v-on

绑定事件监听器。事件类型由参数指定
形式:v-on:事件类型(不要加前缀)=“ 方法名称 ”
方法名称的命名:事件类型 + Handler
也就是设置一个事件(比如点击事件,提交事件等)

我们在视图上不做逻辑业务的操作,和 mvc 一样,逻辑业务的操作放在控制器里,在里面有一个属性 methods ,专门用来放方法的,所以如果视图上有复杂逻辑操作的话,我们一般是设置一个对象函数,使用的时候直接用它的属性,而不是直接在视图上操作

<div id="box">
//绑定一个点击事件,然后调用函数
    <button v-on:click="clickHandler">点击事件 v-on</button>
    <!--简写-->
    <button @click="clickHandler">点击事件二</button>
</div>
<script>
    var vm = new Vue({
        el: "#box",
        data: {
            name: "lili"
        },
        //方法统一写在methods里面
        methods: {
            clickHandler: function(){
                console.log(this.name);

            }
        }
    })
</script>

上面我们简单知道了如何去用 v-on ,下面我们用 click 事件来看一下这个指令的特性
1:回调函数(写在 methods 里的)
1): 不能使用箭头函数,如果使用 this 代表Window全局
2):建议使用 es6 的简化写法
2:vuejs 里面的事件的回调函数可以增加括号,也可以不增加,增加和不增加有什么区别
不加括号的时候, vuejs 会自动给回调函数传递 event 事件源,不能传参
如果加上括号,需要传递 $event,是vuejs帮我们封装的事件源,还可以传参,这里传参我们可以用剩余运算符(…rest:在参数列表里我们这么叫,其他时候是扩展运算符),我们就可以传入多个参数了

<div id="box">
<!--1. vuejs 里面的事件的回调函数可以增加括号,也可以不增加,增加和不增加有什么区别?-->
    <!--如果不增加 括号的时候, vuejs 会自动给回调函数传递 event 事件源;如果加上括号,需要传递 $event,是vuejs帮我们封装的事件源-->
    <!--加上括号,除了可以传递 $event 还可以传递用户自定义的参数-->
    <button v-on:click="clickHandler">vuejs 点击事件</button>
    <!--简写-->
    <button @click="clickHandler">vuejs 点击事件</button>
    <button @click="clickDataHandler($event, 1, 'abc')">有event的点击事件</button>
</div>
<script>
    var vm = new Vue({
        el: "#box",
        data: {
            name: "lili",
        },
        methods: {
            // 回调函数,1. 不能使用箭头函数,如果使用 this 代表Window全局
            // 2. 建议使用 es6 的简化写法
            //...rest  如果是函数的参数列表,则被称为 剩余运算符,只能放置在最后的一个参数
            // es6 尽可能写代码的速度,方便程序员
            clickHandler: function(){
                alert("我被点击了");
            },
            clickDataHandler (event, ...rest) {
                console.log(event.target);
            }
        }
    })
</script>

除了 click 事件比较常见外,submit 事件我们也会常常用到
在提交事件中,我们如果不想跳转页面,就要进行阻止默认行为的操作,除了 event.preventDefault();这个方法外,vuejs 框架里也有他的方法,那就是修饰符

	v-on:click.prevent 事件的修饰符一种,代表阻止表单的默认的行为
	用法:在事件类型后面加上即可,如@submit.prevent="submitHandler",
	这样阻止了表单默认提交的行为,注意,一定要加载 form 标签上
	
	除了事件修饰符,还有其他的类型修饰符,例如 v-model 修饰符
	v-on:"v-model".trim:出去空白字符
	.number:只保留数字
	
	事件修饰符 按键 代表只有用户按下 回车的时候,触发事件
	v-on:keyup.enter="keyupHandler"
	v-on:keyup.13="keyupHandler"
<div id="box">
    <!--@submit.prev  .prevent 称为事件的修饰符,代表阻止表单的默认的行为-->
    <!--prevent 阻止的意思-->
    <!--除了 prevent 事件修饰符,还有其他的修饰符-->
    <!--除了事件修饰符,还有其他的类型修饰符,例如 v-model 修饰符-->
    <form action="#" @submit.prevent="submitHandler">
        <!--去掉空字符串-->
        username:<input type="text" v-model.trim="username" />
        <!--设置里面的内容为数字-->
        password:<input type="text" v-model.number="password" />
        <input type="submit" value="提交">

        <!--事件修饰符 按键 代表只有用户按下 回车的时候,触发事件-->
        <input type="text" v-on:keyup.enter="keyupHandler" />
        <input type="text" v-on:keyup.13="keyupHandler" />
        <input type="text" v-on:keyup.up="keyupHandler" />
        <input type="text" v-on:keyup.down="keyupHandler" />
    </form>
</div>
<script>
    var vm = new Vue({
        el: "#box",
        data: {
           username: '',
            password: '',
        },
        methods: {
            submitHandler ( event ){
                //阻止默认行为
                //vuejs 作者也考虑到阻止表单的默认行为是很常见的需求,封装一个事件修饰符,我们只要用这个修饰符就可以阻止默认的行为,在form标签上加
                // event.preventDefault();
                //收集信息
                var _username = this.username;
                var _password = this.password;
                //进行验证
                if(_username.length <= 0 || _username.length >= 10){
                    alert(" 信息错误 ");
                    return;
                }
                console.log("合法");

            },
            keyupHandler ( event ) {
                if(event.keyCode === 13){
                    console.log("回车键");
                    return;
                }

            }

        }
    })
</script>
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值