Vue(一)3.事件

Vue.js

事件

vue 中,事件通过指令 v-on 进行绑定,v-on 缩写 @

<组件 v-on:事件名称="表达式" />
<组件 @事件名称="表达式" />

组件的 methods 选项

在组件选项中,提供了一个 methods 选项,用来存放组件中使用的函数方法,且存放在 methods 中的函数方法可以通过组件实例(this)进行访问

通过内联方式绑定事件处理函数

<组件 @事件名称="fn" />

<script>
new Vue({
  ...,
  methods: {
  	fn() {
  		//...	
		}
	}
})
</script>
  • 事件绑定函数中的 this 指向组件实例
  • 事件绑定函数中的第一个参数默认为 event 对象
<组件 @事件名称="fn('kaikeba', $event)" />

<script>
new Vue({
  ...,
  methods: {
  	fn(name, ev) {
  		//...	
		}
	}
})
</script>

也可以在事件绑定中直接调用函数(并不会立即执行,也是通过事件触发执行的)

  • 事件对象需要手动传入,名称为 $event
<body>

    <div id="app">
        <button v-on:click="add">按钮</button>
        {{n1}}
        <hr>
        <ul style="padding: 50px; background: red;" v-on:click.self="clickUl">
                                <!--事件名称必须是:$event,默认是事件e,但是若传了别的参数,事件需要手动添加-->  
            <li v-for="user of users" :key="user.id" v-on:click="c(user, $event)" style="background: black;color:white;">
                {{user.name}}
            </li>
        </ul>
    </div>

    <script src="js/vue.js"></script>
    <script>


        let app = new Vue({
            el: '#app',
            data: {
                n1: 1,
                users: [
                    {id: 1, name: 'zmouse'},
                    {id: 2, name: 'mt'},
                    {id: 3, name: 'hai'}
                ]
            },
            methods: {
                add() {
                    // this 指向 当前组件实例
                    this.n1++;
                },
                c(user, e) {
                    console.log(user, e.target);
                },
                clickUl() {
                    console.log('clickUl');
                }
            }
        });

    </script>

</body>

事件修饰符

在事件函数中,我们可以通过 ev.preventDefault()ev.stopPropagation() 来阻止默认行为,阻止冒泡,但是中 vue 中提供一些更加方便的方式来处理这些问题,这就是事件修饰符

.stop

阻止冒泡,等同于在子元素的事件中加一个e.stopPropagation();
理解:ul下有很多li,点击li的时候相当于点击ul,这就是冒泡,使用stop.Propagation()可以阻止冒泡

.prevent
.capture
.self
.once
.passive

按键修饰符

vue 还提供了许多按键修饰符

.keyCode
<组件 @keyup.13="fn" />
.enter
.down
.exact

原生事件

自定义组件中可以自定义一些事件,可以通过 .native 修饰符来指定监听原生中的事件,而不是组件自定义事件

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值