Vue 给组件绑定原生事件

本文详细解析了在Vue.js中如何正确地绑定组件事件。包括原生事件与自定义事件的区别,以及如何在子组件中触发事件并被父组件监听。同时介绍了父组件直接绑定子组件原生事件的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

给一个组件绑定原生事件,如下方法是错误的!

	<div id="root">
		<child @click="handleClick"></child>
	</div>
	<script>
		Vue.component("child",{
			template: "<div>child</div>"
		})
		var vm = new Vue({
			el: "#root",
			methods: {
				handleClick: function(){
					alert("hello");
				}
			}
		})
	</script>

得在组件中进行绑定,下面就是正确的绑定方法,是原生事件。

	<div id="root">
		<child></child>
	</div>
	<script>
		Vue.component("child",{
			template: "<div @click='handleClick'>child</div>",
			methods: {
				handleClick: function(){
					alert("hello");
				}
			}
		})
		var vm = new Vue({
			el: "#root"
		})
	</script>

以上。

child 标签中只能绑定自定义事件,而子组件中 div 中绑定的click 才是原生事件。

自定义事件,即由子组件emit 出来,父组件来监听的。如下。

	<div id="root">
		<child @inc="handleinc"></child>
	</div>
	<script>
		Vue.component("child",{
			template: "<div @click='handleClick'>child</div>",
			methods: {
				handleClick: function(){
					alert("hello");
					this.$emit("inc")
				}
			}
		})
		var vm = new Vue({
			el: "#root",
			methods: {
				handleinc: function(){
					alert("inc");
				}
			}
		})
	</script>

 

但是,父组件也可以直接绑定原生事件!不通过子组件的传递的方法!如下。

	<div id="root">
		<!-- <child @inc="handleinc"></child> -->
		<!-- 组件绑定原生事件 -->
		<child @click.native="handleinc"></child>
	</div>
	<script>
		Vue.component("child",{
			template: "<div>Child</div>"
			// template: "<div @click='handleClick'>child</div>",
			// methods: {
			// 	handleClick: function(){
			// 		alert("hello");
			// 		this.$emit("inc")
			// 	}
			// }
		})
		var vm = new Vue({
			el: "#root",
			methods: {
				handleinc: function(){
					alert("inc");
				}
			}
		})
	</script>

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值