vue学习笔记:VUE组件通信(子传父)

引用:

<div id="app">
       <my-tab></my-tab>
</div>

js:

var vm = new Vue({
				el: '#app',  // 挂载
				data: { 
				},
                components: {
                    'my-tab':{   // 父组件
                        template: '#sueTab',
                        data(){
                            return {
								childn: 0,    // 创建变量用来接收子组件传递过来的值
								chindtablist: []    // 同上
                            }
						},
						methods:{
							getdata:function(d){  // 获取子组件传递的值 并给父组件data中的变量赋值  参数d为子组件传递的数据
								// 由于多个参数,使用arguments接收,拿到的数据为数组模式
								this.childn = d[0];
								this.chindtablist = d[1];
							}
						},
						components:{
							'my-tab-2':{    // 子组件
								template: '#sueTab2',
								data(){
									return {
										n: 0,
										tabList: [
											{name:'aaa', msg: 'aaa内容'},
											{name:'bbb', msg: 'bbb内容'},
											{name:'ccc', msg: 'ccc内容'}]
									}
								},
								methods: {
									send: function(){
										// 传递单个参数直接 ('data',this.n)
										// 传递单个参数 父组件模版引用中接收为 @data="getdata"   @data中的data与子组件传递时'data'名字保持一致
										// 传递多个参数 ('data',this.n,this.tabList)
										// 传递多个参数 父组件模版引用中接收为 @data="getdata(arguments)"  以arguments数组形式接收  arguments不能更改
										this.$emit('data',this.n,this.tabList);     
									}
								},
								mounted:function(){    // 页面加载时触发
									this.send();
								},
							}
						}

                    }
                },

			})

模版:

<template id="sueTab">
        <div class="Sue-tab">
			<ul class="tab-head nav nav-tabs">
				<li role="presentation" v-for="(v,i) in chindtablist" :class="childn==i? 'active':''" @click="childn = i"><a href="#">{{v.name}}</a></li>
			</ul>
			<div class="tab-body">
				<div v-for="(v,i) in chindtablist" v-if="i==childn">{{v.msg}}</div>
			</div>
			
			<!-- my-tab-2为子组件 @data与$emit中data保持一致 由于$emit发送了多个参数 所以此处接收使用arguments接收 -->
			<my-tab-2 @data='getdata(arguments)'></my-tab-2>    
		</div>

    </template>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值