Vue组件通信(父传子,子传父)

父传子props
<!DOCTYPE html>
<html>
<head>
	<title></title>
</head>
<body>
	<div id="app">
		<cpn  :cmessage="message" :c-movies="movies"></cpn>
	</div>
	<template id="cpn">
		<div>
			<div>{{cmessage}}</div>
			<div>{{cMovies}}</div>
		</div>
	</template>
<script type="text/javascript" src="./js/vue.js"></script>
<script type="text/javascript">
	const cpn = {
		template:'#cpn',
		props:{
			cmessage:{
				type:Object,
				default(){
					return {};
				}
			},
			cMovies:{
				type:String,
				default:''
			}
		},
		data(){
			return {}
		},
		methods: {
			
		},

	};
	const app = new Vue({
		el: "#app",
		data: {
			message:{name:'海王',name2:'海贼王'},
			movies:'电影'
		},
		components:{
			cpn
		}
	});
	
</script>
</body>
</html>
子传父
<!DOCTYPE html>
<html>
<head>
	<title></title>
</head>
<body>
	<div id="app">
		<cpn @itemclick="itemclicks"></cpn>
	</div>
	<template id="cpn">
		<div>
			<button v-for="item in categories" @click="btnclick(item)">{{item.name}}</button>
		</div>
	</template>
<script type="text/javascript" src="./js/vue.js"></script>
<script type="text/javascript">
	const cpn = {
		template:"#cpn",
		data(){
			return {
				categories:[
					{ id: 1, name: '全部'},
					{ id: 2, name: '鞋子'},
					{ id: 3, name:'服装'}
				]
			}
		},
		methods: {
			btnclick(item){
				this.$emit('itemclick',item);
			}
		},
	}
	const vue = new Vue({
		el: '#app',
		data:{

		},
		components:{
			cpn
		},
		methods: {
			itemclicks(item){
				console.log(item)
			}
		},

	});
</script>
</body>
</html>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值