Vue的父与子 奇淫技巧 子传父

全局组件:公有儿子

父组件 传递信息给 儿子

静态绑定:

在这里插入图片描述在这里插入图片描述

动态绑定:

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8" />
		<title></title>
		<script src="js/vue.js" type="text/javascript" charset="utf-8"></script>
	</head>
	<body>
		<div id="app">
			<ul>
				<product v-for="item in prolist" :prolist="item"></product>
			</ul>
		</div>
		<script type="text/javascript">
			let con1 = Vue.component('product',{
				props:['prolist'],
				template:`<li>
							<h2>信息:{{prolist.title}}</h2>
							<h4>价格:{{prolist.price}}</h4>
						</li>`
			})
			let app = new Vue({
				el:'#app',
				data(){
					return{
						prolist:[
							{
								title:"产品1",
								price:"82Yuan"
							},
							{
								title:"产品2",
								price:"83Yuan"
							},
							{
								title:"产品3",
								price:"84Yuan"
							},
							{
								title:"产品4",
								price:"85Yuan"
							},
						]
					}
				},
				methods:{
					
				},
				components:{
					con1
				}
			})
		</script>
	</body>
</html>

在这里插入图片描述在这里插入图片描述在这里插入图片描述

子组件向父组件传递信息

方法一:

在这里插入图片描述

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8" />
		<title></title>
		<script src="js/vue.js" type="text/javascript" charset="utf-8"></script>
	</head>
	<body>
		<div id="app">
			<ul>
				<product v-for="item in prolist" :prolist="item" @customname="getinfo"></product>
			</ul>
			<h2>选中的产品是:{{childback}}</h2>
		</div>
		<script type="text/javascript">
			let con1 = Vue.component('product',{
				props:['prolist'],
				template:`<li>
							<h2>信息:{{prolist.title}}</h2>
							<h4>价格:{{prolist.price}}</h4>
							<button @click="childclick(prolist.title)">选择</button>
						</li>`,
				methods:{
					childclick(protitle){
						//自定义事件
						this.$emit('customname',protitle)
					}
				}
			})
			let app = new Vue({
				el:'#app',
				data(){
					return{
						prolist:[
							{
								title:"产品1",
								price:"82Yuan"
							},
							{
								title:"产品2",
								price:"83Yuan"
							},
							{
								title:"产品3",
								price:"84Yuan"
							},
							{
								title:"产品4",
								price:"85Yuan"
							},
						],
						childback:'无'
					}
				},
				methods:{
					getinfo(data){
						this.childback =  data	
					}
				},
				components:{
					con1
				}
			})
		</script>
	</body>
</html>

在这里插入图片描述在这里插入图片描述在这里插入图片描述

方法二:通过将父元素的执行函数传递到子组件,让子组件代替父元素执行

在这里插入图片描述

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8" />
		<title></title>
		<script src="js/vue.js" type="text/javascript" charset="utf-8"></script>
	</head>
	<body>
		<div id="app">
			<ul>
				<product v-for="item in prolist" :prolist="item" :action="getinfo" ></product>
			</ul>
			<h2>选中的产品是:{{childback}}</h2>
		</div>
		<script type="text/javascript">
			let con1 = Vue.component('product',{
				props:['prolist','action'],
				template:`<li>
							<h2>信息:{{prolist.title}}</h2>
							<h4>价格:{{prolist.price}}</h4>
							<button @click="childclick(prolist.title)">选择</button>
						</li>`,
				methods:{
					childclick(protitle){
						this.action(protitle)
					}
				}
			})
			let app = new Vue({
				el:'#app',
				data(){
					return{
						prolist:[
							{
								title:"产品1",
								price:"82Yuan"
							},
							{
								title:"产品2",
								price:"83Yuan"
							},
							{
								title:"产品3",
								price:"84Yuan"
							},
							{
								title:"产品4",
								price:"85Yuan"
							},
						],
						childback:'无'
					}
				},
				methods:{
					getinfo(data){
						this.childback =  data	
					}
				},
				components:{
					con1
				}
			})
		</script>
	</body>
</html>

在这里插入图片描述
在这里插入图片描述

方法三:子组件通过使用 $parent属性 偷窥父元素

在这里插入图片描述那我还想再懒一点!!!!
在这里插入图片描述
再简
在这里插入图片描述除了$parent 之外 这里使用$root一样可以达到效果,因为这里的parent就时root 当组件之间嵌套很深的时候,子组件淹没在充满爸爸人群里却想要一下子找到祖宗的时候,可以使用$root


父组件可以用过$children来操作子组件,偷偷康康子组件发育的怎么样,哈哈,其实并不是很推荐这种方式,最好还是使用props属性来传值


最后还是要根据实际情况进行使用,低耦合!等等

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值