<template>
<div>
<!-- 配置问题弹窗 -->
<el-dialog :title="title" :visible.sync="saw" width="1000px" append-to-body>
<question-bank
ref="questionBank"
:exampaperId="exampaperId" //父组件给子组件传值
@exampaperQuestionGetList="getList" //自组件调用父组件方法
></question-bank>
</el-dialog>
</div>
</template>
<script>
import { listExampaperQuestion, getExampaperQuestion, delExampaperQuestion, addExampaperQuestion, updateExampaperQuestion } from "@/api/active/question/exampaperQuestion";
//引入组件
import QuestionBank from "@/views/active/question/exampaper/questionBank.vue";
export default {
name: "ExampaperQuestion",
components: {QuestionBank}, //组件名
props: {
exampaperId: String, //接收父组件传值
},
代码如图所示。
1. 父组件调用子组件方法:this.$refs.questionBank.getList(); 直接使用会报this.$refs.questionBank is undefined 错误。
错误原因:子组件getList方法没渲染完。
解决:使用this.$nextTick()方法。
this.$nextTick(() => {
this.$refs.questionBank.getList();
});
2. 子组件调用父组件方法:this.$emit('方法名',参数(参数可有可无))。
例如:无参:this.$emit('exampaperQuestionGetList');
有参:this.$emit('exampaperQuestionGetList','1' );