问题:在项目中的子组件调用父组件的closeRankLoading()方法时遇到报错:
vue.runtime.esm.js:619 [Vue warn]: Error in v-on handler: "TypeError: this.$parent.closeRankLoading is not a function"

原因:原来是子组件在父组件调用布局时外层还套了两个其它element-ui组件,导致this.$parent只是到了上一层组件,并没有到达父组件

<template>
	<div>
	<el-row :gutter="20">
      <el-col :span="12">
        <ranking
          ref="ranking"
          :report-data="overViewData.report"
          :group-id="group_id"
          :loading="rankLoading"
        ></ranking>
      </el-col>
    </el-row>
	</div>
</template>

在子组件打印this.$parent可见:
在这里插入图片描述
解决:写成this.$parent.$parent.$parent.closeRankLoading()可以正常调用

另猜测:此情况下另一种调用方法this.$emit()报错也可能是同样原因

Logo

前往低代码交流专区

更多推荐