【发布时间】:2018-08-09 18:55:30
【问题描述】:
我有一个问题,我想从子组件中检索数据,但父组件需要使用该数据,在子组件被挂载。
我的父母长这样
<template>
<component :is="childComp" @mounted="setData"/>
</template>
<script>
data : {
childComp : null,
importantData : null
},
methods : {
addComponent : function() {
this.prepareToAdd(this.importantData);
this.childComp = "componentA"; //sometimes will be other component
},
setData : function(value) {
this.importantData = value;
},
prepareToAdd : function(importantData){
//something that has to be run before childComp can be mounted.
}
}
</script>
我的孩子(或者更确切地说,所有潜在的孩子)会包含这样的内容:
<script>
data : {
importantData : 'ABC',
},
created: function() {
this.$emit('mounted', this.importantData);
},
</script>
这显然行不通 - importantData 是在子组件挂载时设置的,但 prepareToAdd 首先需要该数据。
在挂载之前,是否有其他方法可以访问子组件并访问其数据?
【问题讨论】:
-
为什么要将检索数据的责任委托给子组件而不是父组件?
-
您能更清楚地描述一下需求是什么吗?父母是否在自己的状态下设置了一些东西?将作为道具传递给孩子的东西? DOM中的东西?为什么需要在孩子挂载之前运行?
标签: javascript vue.js vue-component