vue给动态组件绑定ref属性并调用子组件的方法
1、template中的代码
<el-tabs class="el-tab" v-model="activeName" @tab-click="handleClick">
<!-- <el-tab-pane label="门禁异常记录" name="first">
<DoorExceptionRecord
ref="childDoorAbnormal"
:changeTime="this.changeTime !== null ? this.changeTime : []"
></DoorExceptionRecord>
</el-tab-pane>
<el-tab-pane label="门禁正常通行" name="second">
<NormalAccessControl
ref="childAccessAbnormal"
:changeTime="this.changeTime !== null ? this.changeTime : []"
></NormalAccessControl>
</el-tab-pane>
<el-tab-pane label="巡更异常记录" name="three">
<patrolAbnormal
ref="childPatrolAbnormal"
:changeTime="this.changeTime !== null ? this.changeTime : []"
></patrolAbnormal>
</el-tab-pane>
<el-tab-pane label="访客记录" name="four">
<VisitRecord
ref="childVisitAbnormal"
:changeTime="this.changeTime !== null ? this.changeTime : []"
></VisitRecord>
</el-tab-pane>
<el-tab-pane label="操作日志" name="five">
<OptionLog
ref="childOptionAbnormal"
:changeTime="this.changeTime !== null ? this.changeTime : []"
></OptionLog>
</el-tab-pane> -->
<!-- 代码优化 -->
<el-tab-pane
v-for="(item, index) in cpnsNmae"
:key="index"
:label="item.type"
:name="item.name"
>
<component
ref="item"
:changeTime="changeTime"
v-if="activeName == item.name"
:is="item.cpn"
></component>
</el-tab-pane>
</el-tabs>
2、data和动态组件数据
![在这里插入图片描述](https://img-blog.csdnimg.cn/33408ae9c19d4bd4a67401810e8269fc.png#pic_center)
3、调用子组件的方法
`` searchPatrolAbnormal() {
console.log(this.$refs.item[0], " this.$refs.");
this.$refs.item[0].getPatrolAbnormalData();
// });
// case "first":
// this.$refs.DoorExceptionRecord.getExeceptionDoorlData();
// break;
// case "second":
// this.$refs.NormalAccessControl.getNormalDoorlData();
// break;
// case "three":
// this.$refs.patrolAbnormal.getPatrolAbnormalData();
// break;
// case "four":
// this.$refs.VisitRecord.getVisitData();
// break;
// case "five":
// this.$refs.OptionLog.getOptionAbnormalData();
// break;
// default:
// break;
// }
},