- 在子组件中,我们可以通过
this.$parent
来调用父组件中的变量
methods:{
sonMethods(){
this.$parent.name
this.$parent.getNameList
}
}
data() {
return {
name: "wyf",
age: "18"
}
}
methods: {
getNameList(){
console.log("获取姓名列表啦~")
}
}
- 但是,如果我们经常使用
this.$parent
,就会发现,有时候会产生我们需要的效果,有时候什么事都不会发生,调用不成功,这是为什么呢?
因为,有时候子组件的外层还有UI组件,那么该子组件的父组件就变成了UI组件。
比如:
<template>
<el-tabs>
<el-tab-pane>
<SonComponent/>
<el-tab-pane>
<el-tabs>
</template>
- 当我们使用第三方UI框架而无法使用
this.$parent
访问父组件的时候,如果非要考虑使用$parent
,我们可以考虑多写几个.$parent
直到找到你想要的那个父组件为止(this.$parent.$parent.$parent
)。 vue
官方文档明确告诉我们,要有节制的使用$parent
和$children
,他们主要的目的是作为访问组件的应急方法。更推荐使用props
和$emit
来实现父子组件之间的通信。