vue.js - Vue中如何获取父模板组件

标签 vue.js vuejs2 vue-component

我知道在 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/

相关文章:

html - Vue2 如何使用 $refs 定位元素并删除 css 类

javascript - 永远不会报告带有去抖动的 Vue 组件方法中的错误

javascript - Vue watch[fat arrow scope] 提供了错误的 this 上下文

javascript - vue 中的 JsonEditor 组件未显示

javascript - 创建一个使用 Vue 和 Typescript 的 Meteor 项目

vue.js - 使用 Nuxt.js 时如何在前端进行异步请求?

Vue.js v-for 与 v-model

javascript - 将类添加到动态更改对象列表中的顶部对象

vue.js - 在 vue.js 的子组件中创建传递 Prop 的本地副本?

javascript - 使用 v-for 填充组件的 Vuex getter