Vue关于事件处理

事件处理

关于Vue的事件处理机制,介绍一下三点,分别是:绑定监听,事件修饰符,按键修饰符。

1.绑定监听

最常见的事件绑定监听即v-on指令,写法为:v-on:xxx = ‘fun’,可简写为:@xxx = ‘fun’,其中fun中可以传递参数,写法为:@xxx = ‘fun(参数)’。对于每一个监听函数,都默认带有事件形参:event,即若定义的监听函数即使没有带参数,但是会默认有一个形参event,其隐含的属性对象为$event。具体为:

  1. v-on:xxx=“fun”
  2. @xxx=“fun”
  3. @xxx=“fun(参数)”
  4. 默认事件形参: event
  5. 隐含属性对象: $event

2.事件修饰符

对于事件修饰符,Vue分别使用了.prevent和.stop来简化了对于阻止事件的默认行为和停止事件冒泡事件的编码,即:

  1. .prevent : 阻止事件的默认行为 event.preventDefault()
  2. .stop : 停止事件冒泡 event.stopPropagation()

3.按键修饰符

对于按键修饰符,Vue也使用了更加简洁的写法,具体为:

  1. .keycode : 操作的是某个 keycode 值的键
  2. .keyName : 操作的某个按键名的键(少部分)

具体见代码为例进行说明:

  <div id="app">
        <h4>绑定监听</h4>
        <button @click="test1">test1</button>
        <button @click="test2('katle')">test2</button>
        <button @click="test3">test3</button>
        <button @click="test4('hahah',$event)">test4</button>

        <!--
          .stop:停止事件冒泡event.stopPropagation()
          .prevent:阻止事件的默认行为event.preventDefault()
        -->
        <h4>事件修饰符</h4>
        <div style="width:200px;height: 200px;background-color: yellow" @click="test5">
            <div style="width:100px;height: 100px;background-color: green" @click.stop="test6"></div>
        </div>
        <a href="https://www.baidu.com/" @click.prevent="test7">百度一下</a>

        <!--
          .keyCode:操作的是某个keycode值的键
          keyName:操作的是某个按键名的键(但只有少部分按键可以使用按键名来编码)
        -->
        <h4>按键修饰符</h4>
        enter键:<input type="text" @keyup.enter="test8"> <br>
        退格键:<input type="text" @keyup.8="test8">
    </div>

<script src="../js/vue.js" type="text/javascript" charset="utf-8"></script>
<script>
    var vue = new Vue({
        el:'#app',
        data:{},
        methods:{
            /*
            * 默认事件形参:event
            * 隐藏属性对象:$event
            * */
            test1(){
                alert('test1')
            },
            test2(msg){
                alert(msg + '+' + 'test2')
            },
            test3(event){
                alert(event.target.innerHTML + '--kalte')
            },
            test4(msg,event){
                alert(msg + '-' + event.target.innerHTML)
            },

            test5(){
                alert('out')
            },

            test6(event){
                //阻止事件冒泡
                //event.stopPropagation()
                alert('inner')
            } ,
            test7(event){
                //event.preventDefault()
                alert('已阻止默认行为')
            },
            
            test8(event){
                 /*if(event.keyCode === 13) {
                     alert(event.target.value + '-' + event.keyCode)
                 }*/
                alert(event.target.value + '+' + event.keyCode)
            }

        }
    })

</script>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Vue.js 提供了一种简单的方式来处理 DOM 事件。你可以在 Vue 实例上使用 v-on 指令来监听 DOM 事件,并在触发事件时调用指定的方法。 例如,如果你想要在点击按钮时触发一个方法,你可以这样写: ```html <button v-on:click="doSomething">Click me</button> ``` 在这个例子中,v-on:click="doSomething" 表示当按钮被点击时,调用 Vue 实例中的 doSomething 方法。 除了 click 事件,你还可以监听其他的 DOM 事件,例如 mouseover、keydown 等等。你可以通过在 v-on 指令后面跟上事件名来监听这些事件。 另外,你还可以使用 @ 符号作为 v-on 的简写,例如: ```html <button @click="doSomething">Click me</button> ``` 这与上面的例子是等价的。 除了监听 DOM 事件外,你还可以在 Vue 实例中定义自定义事件,这些事件可以用来在组件间进行通信。要定义一个自定义事件,你可以使用 Vue 实例上的 $emit 方法。 例如,如果你想在某个组件中触发一个自定义事件,并将一些数据传递给其他组件,你可以这样写: ```javascript this.$emit('my-event', data); ``` 在这个例子中,'my-event' 表示自定义事件的名称,data 表示要传递给其他组件的数据。其他组件可以通过在模板中使用 v-on 指令来监听这个自定义事件,并在事件触发时调用指定的方法。 例如: ```html <my-component v-on:my-event="handleEvent"></my-component> ``` 在这个例子中,当 my-event 自定义事件被触发时,调用 Vue 实例中的 handleEvent 方法。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值