vue 父子 子父 间传值 和两个子组件间传值 解析

			<!-- 这是第二种 -->
<div>{{count}}</div>
			<jia :count="count" >加</jia>
			<jian :count="count" >减</jian>
	<!-- 这是第二种 -->
	<script>
		var event = new Vue();
		var vm = new Vue({
			el:"#app",
			data:{
				count:0,
			},
			mounted :function(){         //这里是重点    少了.bind(*)不行
				event.$on('changeE',function(num){
					this.count = num 
				}.bind(this))
			},
			components : {
				'jia':{
					template:'<button @click="setCount">加</button>',
					props:['count'],
					methods:{
						setCount:function(){
							event.$emit ('changeE',this.count + 1 )
						}
					}
				},
				'jian':{
					data:function(){
						return {
							msg:''
						}
					},
					template:'<button @click="setCount">减{{msg}}</button>',
					props:['count'],
					methods:{
						setCount:function(){
							event.$emit ('changeE',this.count - 1 )
						}
					},
					mounted:function(){
						var that = this                  
						event.$on('changeE',function(data){
							console.log(data)
							console.log(435)
							that.msg = data
						})
					}
				}
			},
			
		})
		//这是一个组件中有两个模板的  例子
	</script>
<!-- 这是第一种   通过父子    子父之间的传值  来完成 --> 	
			<div>{{count}}</div>
			<!-- 这是第一种 -->
			<!-- <jia :count="count" @add='jia'>加</jia> -->
			<!-- <jian :count="count" @minus='jian'>减</jian> -->
<script>
		var vm = new Vue({
			el:"#app",
			data:{
				count:0,
			},
			methods:{
				jia:function(data){
					this.count = this.count+1
					console.log(data)
				},
				jian:function(data){
					this.count = this.count-1
				}
			},
			components : {
				'jia':{
					template:'<button @click="setCount">加</button>',
					props:['count'],
					methods:{
						setCount:function(){
							this.$emit ('add',this.count + 1 )
						}
					}
				},
				'jian':{
					template:'<button @click="setCount">减</button>',
					props:['count'],
					methods:{
						setCount:function(){
							this.$emit ('minus',this.count + 1 )
						}
					}
				}
			},
			
		})
	</script>

两者的区别是  

第一种  使用点击组件(methods  this.$emit)  给父组件绑定方法 然后再组件里写上绑定的方法  然后再父组件里的method中写方法  没有使用mounted挂载  $on  函数

第二种  使用也是在组件上绑定方法 不过使用全局vue实例  event.$emit  而且加减子组件使用$emit绑定的函数名称应该是要一样的  这样才能$on是监听才能一致  最大的区别是子  和  父组件里的mounted 中的$on使用不相同  父组件要在最后加上.bind(this)  而子组件中不需要

 

子组件中的this 指向的是全局 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值