先看代码:
1、父组件:
<template>
<div>
<div v-if="!userShow">
父组件内容区
<el-button @click="lookUserInfo(scope.row)"> 查看</el-button>
</div>
<!-- 子组件 -->
<user-manager v-if="userShow" v-bind:userData = "userList"> </user-manager>
</div>
</template>
<script>
//导入用户页面
import userManager from '../userManager.vue';
export default {
name:'taskManager',
components:{userManager},
data() {
return {
userShow:false,
userList:[]
}
},
methods: {
//显示子组件,隐藏父组件
lookUserInfo(row) {
this.userShow = true;
},
//此方法,子组件会调用,调用返回父页面:隐藏子组件,显示父组件
showUserInfo() {
this.userShow = false;
},
}
}
</script>
2、子组件:
<template>
<div>
<!-- 返回父页面按钮 -->
<div>
<el-button @click="goToParent"> 返回</el-button>
</div>
<div>
搜索区
</div>
<div class="white-bg margin auto">
<el-table>
数据表格展示区
</el-table>
</div>
</div>
</template>
<script>
export default {
name:'userManager',
props: ['userData'],//接收父组件的参数
data() {
return {
userDataInfo:[]
}
},
mounted: function () {
this.userDataInfo= this.userData;
},
methods: {
goToParent() {
//调父页面方法
this.$emit('close');
}
}
}
</script>
说明:
1、父组件中:
(1)、导入子组件: import userManager from '../userManager.vue';
(2)、引用子组件: components:{userManager},
(3)、使用子组件: <user-manager> </user-manager>
(4)、向子组件传值:<user-manager v-bind:userData = "userList"> </user-manager> 重点是v-bind:userData = "userList"这句,v-bind:userData中的userData名字随意取,= 后的"userList" 与子组件无关,是属于父组件的数据
2、子组件中:
父组件中:
(1)、接收父组件的参数:props: ['userData'], userData要与父页面v-bind:userData中的userData名一致
(2)、使用接收父组件的值: this.userDataInfo= this.userData;