Vue 父子组件相互访问

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title></title>
<script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script> 
</head>
<body>
	
		<div id="app">
			<button @click="showindex">下标访问子组件</button>
			<button @click="showbtn">ref访问子组件</button>
		
			<cpn></cpn>
			<qw ref="aa"></qw>
		</div> 
		
</body>


<template id="demo">
	<div>
		<h1>子组件</h1>
	</div>
</template>

<template id="demo2">
	<div>
		<h1>子组件demo2</h1>
		<button @click="btnclick">访问父方法</button>
		
		<abc></abc>
	</div>
</template>

<template id="demo3">
	<div>
		<h1>子组件demo3</h1>
		<button @click="fwParent">访问父方法</button>
		<button @click="rootbtn">访问根组件root</button>
	</div>
</template>

<script>
	
	Vue.component('cpn',{
		data () {
		  return {
		    wold: 'sddddf'
		  }
		},
		template:'#demo',
		methods:{
			showmsg(){
				console.log(123456);
			}
		}
	})
	

	const abc = Vue.extend({
		data () {
		  return {
		    wold: 'cdcdcd'
		  }
		},
		template:'#demo3',
		methods:{
			showmsg(){
				console.log(6666666);
			},
			fwParent(){
				this.$parent.btnclick()//访问父方法btnclick
				console.log(this.$parent.wold)
			},
			rootbtn(){
				console.log(this.$root.name); // this.$root == vm
				this.$root.test()
			}
			
		}
		
		
	})
	
	
	Vue.component('qw',{
	
		data () {
		  return {
		    wold: 'sdasadasadf'
		  }
		},
		template:'#demo2',
		methods:{
			showmsg(){
				console.log(9999999);
			},
			btnclick(){
				console.log("qw组件")
			}
		},
		components : {
		 	abc:abc
		}
		
	})
	
	 var vm = new Vue({
	  el: '#app',
	  data:{
		  isshow:true,
		  world:"qwer",
		  name:"abcdefg"
	  },
	  methods:{
		  showindex:function(){
			 console.log(this.$children)
			 //通过$children访问子组件的方法
			 this.$children[1].showmsg();
			 console.log(this.$children[0].wold)  //通过下标访问组件data数据
		  },
		  test(){
			console.log(123)  
		  },
		  
		  showbtn(){
			  // <qw ref="aa"></qw>   ref 指定组件名称
			  //$refs.aa 通过ref名称访问子组件
			  console.log(this.$refs.aa.wold)
			
		  }
	  }, 
	})
	
	
</script>
</html>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Vue是一种流行的JavaScript框架,用于构建用户界面。在Vue中,父子组件之间传递数据是一种常见的需求。以下是一种常用的方法来实现父子组件之间的数据传递: 1. Props(属性):父组件可以通过props属性向子组件传递数据。在父组件中,通过在子组件标签上绑定属性的方式传递数据。在子组件中,可以通过props选项接收并使用这些数据。 父组件: ```html <template> <div> <child-component :message="parentMessage"></child-component> </div> </template> <script> import ChildComponent from './ChildComponent.vue'; export default { components: { ChildComponent }, data() { return { parentMessage: 'Hello from parent component' }; } } </script> ``` 子组件: ```html <template> <div> <p>{{ message }}</p> </div> </template> <script> export default { props: ['message'] } </script> ``` 2. $emit(自定义事件):子组件可以通过$emit方法触发自定义事件,并将需要传递的数据作为参数传递给父组件。在父组件中,通过在子组件标签上监听自定义事件的方式接收数据。 父组件: ```html <template> <div> <child-component @child-event="handleChildEvent"></child-component> </div> </template> <script> import ChildComponent from './ChildComponent.vue'; export default { components: { ChildComponent }, methods: { handleChildEvent(data) { console.log(data); // 在这里处理子组件传递的数据 } } } </script> ``` 子组件: ```html <template> <div> <button @click="emitEvent">触发事件</button> </div> </template> <script> export default { methods: { emitEvent() { this.$emit('child-event', 'Hello from child component'); // 触发自定义事件,并传递数据给父组件 } } } </script> ``` 以上是Vue中实现父子组件之间传递数据的两种常用方法。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值