Vue 组件 父子组件间的数据传递

本文详细介绍了Vue.js中组件间的通信机制,包括父组件向子组件传递数据的方法及子组件如何通过事件触发的方式向父组件传递数据。通过具体示例展示了如何实现数据的双向流动,为开发者提供实用的组件间通信技巧。

首先定义一个组件(局部组件)

	<div id="root">
		<counter></counter>
		<counter></counter>
	</div>
	<script>
		// 局部组件
		var counter = {
			template: "<div>0</div>"
		}
		var vm = new Vue({
			el: "#root",
			components: {
				counter: counter
			}
		})
	</script>

 

父组件向子组件传递数据 —— 通过属性

下面,父组件通过count 属性向子组件中传递了一个数字,同时子组件接收该属性

	<div id="root">
		<counter :count="1"></counter>
		<counter :count="2"></counter>
	</div>
	<script>
		// 局部组件
		var counter = {
			props: ["count"],
			template: "<div>{{count}}</div>"
		}
		var vm = new Vue({
			el: "#root",
			components: {
				counter: counter
			}
		})
	</script>

Vue 中有“单向数据流”概念。父组件可以向子组件中通过属性方式传递数据并修改数据,但子组件不可以修改该数据。

那么如何获得父组件的数据并修改呢?

将父组件的值赋值给子组件的data中的数据即可,如下。

	<div id="root">
		<counter :count="1"></counter>
		<counter :count="2"></counter>
	</div>
	<script>
		// 局部组件
		var counter = {
			props: ["count"],
			template: "<div @click='handleClick'>{{number}}</div>",
			data: function(){
				return {
					number: this.count
				}
			},
			methods: {
				handleClick: function(){
					this.number ++ ;
				}
			}
		}
		var vm = new Vue({
			el: "#root",
			components: {
				counter: counter
			}
		})
	</script>

 

子组件向父组件中传数据 —— 事件触发的方式

如下。

	<div id="root">
		<counter :count="0" @change="handlechange"></counter>
		<counter :count="0" @change="handlechange"></counter>
		<div>{{total}}</div>
	</div>
	<script>
		// 局部组件
		var counter = {
			props: ["count"],
			template: "<div @click='handleClick'>{{number}}</div>",
			data: function(){
				return {
					number: this.count
				}
			},
			methods: {
				handleClick: function(){
					this.number ++ ;
					this.$emit("change", 1);
				}
			}
		}
		var vm = new Vue({
			el: "#root",
			data: {
				total: 0
			},
			components: {
				counter: counter
			},
			methods: {
				handlechange: function(step){
					this.total += step;
				}
			}
		})
	</script>

 

评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值