我知道在 vue 中,我可以使用 this.$parent
获取 vdom 树中的上层组件。但我期待一些不同的东西:获取呈现当前组件的组件。
例如,我有一个带有模板的组件(名为 comp-container
):
<template>
<comp-a>
<comp-b></comp-b>
</comp-a>
</template>
并且在 comp-b
$parent
将是 comp-a
的一个实例不是comp-container
这是我所期待的。
我目前的方法是遍历 $parent
属性直到我找到comp-b
存在于 $options.components
.此方法目前有效,但看起来很丑陋,如果 comp-b
就会中断。是全局注册的组件。有官方的方法可以做到这一点吗?
通过 props 作为 <comp-b :container="this"></comp-b>
传递父模板组件可能会完成这项工作,但它太冗长了,不受欢迎。
最佳答案
我不确定确切的用例,但基本上如果涉及插槽(我几乎假设,否则 $parent 将正常工作),您可以在以下位置找到渲染组件: this.$slots.default[0].context;
基本上,插槽的上下文属性是渲染上下文(渲染组件 - 即渲染组件的模板组件)。
仅使用 Vue 2 进行测试
关于vue.js - Vue中如何获取父模板组件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44383831/