vue组件实现子传父的操作

  • 实现了n1的值与局部组件的counter的值同时变化。
  • this.$emit(“numchange”,this.counter)
<!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">
			<h1>子传父值</h1>
			<p>{{n1}}</p>
			<num :val="n1" @numchange="changn2($event)"></num><br>
		<!-- 监听numchange事件 执行changn2方法 $event是传递的值 -->
			<num :val="n2"></num><br>
			<num></num><br>
		</div>
		<script type="text/javascript">
			const num = {
				template: `<button @click="add()">
				{{counter}}
				</button>`,
				data() {
					return {
						counter: null
					}
				}, //定义组件的内容counter为null
				props: {
					val: {
						type: Number,
						default: 1
					}
				}, //接收props值默认为1
				created() {
					this.counter = this.val;
				},//把val的值赋值给counter
				methods:{
					add(){
						this.counter++;
						/* 将数据创建一个事件,将数据发给父组件 */
						this.$emit("numchange",this.counter)
					}
				}

			}

			new Vue({
				el: "#app",
				components: {
					num
				},
				data: {
					n1: 5,
					n2: 10,

				},
				methods:{
					/* 对接收的值进行处理 */
					changn2($event){
						this.n1=$event;
					}
				}
			})
			//给两个组件传默认值
		</script>
	</body>
</html>

猜你喜欢

转载自blog.csdn.net/qq_40994735/article/details/108337461