在Vuejs中按名称获取特定的父组件

时间:2018-10-08 18:47:30

标签: javascript vue.js

我需要一种可靠的方法来调用vuejs中n个父级的父级组件。 在jQuery中寻找更像closet('element')的东西时,您不必指定有多少个父母或孩子,只需给它指定所需组件的名称,它将为您递归查找直到它找到合适的一个。

我只是想知道是否有这样的东西:this。$ find(component-name);或this。$ closest(component-name);

我在某人正在使用$ ref的地方阅读过,但我认为这不是该用例的正确选择吗?

当您不知道有多少父母时,这不是很可靠的$ parent。$ parent。

谢谢

1 个答案:

答案 0 :(得分:2)

您可以使用while循环,遍历所有父组件。

getComponent(componentName) {
  let component = null
  let parent = this.$parent
  while (parent && !component) {
    if (parent.$options.name === componentName) {
      component = parent
    }
    parent = parent.$parent
  }
  return component
},

示例:

mounted() {
  console.log(this.getComponent('App'))
},