如下
父组件
<template>
<my-editor :lesser="lesser" :larger="larger"></my-editor>
</template>
<script>
export default {
data(){
return {
lesser:'lesser',
larger:''
},
mounted:function(){
this.$http.post('api.example.com/email',data).then(res=>{
this.larger = res.body.emailText;
})
}
}
}
</script>
父组件传如lesser和larger两个参数,lesser很短,larger足够长(约一篇博客长度)
子组件
<template>
<div contenteditable v-html="larger"></div>
</template>
<script>
export default {
name:'my-editor',
props:['lesser','larger'],
created:function(){
console.log(this.lesser,this.larger) // ×--> 'lesser',
setTimeout(()=>{
console.log(this.lesser,this.larger) // √--> 'lesser','..一段长文..'
},1000)
}
}
</script>
子组件定义created阶段输出lesser和larger。但larger为空。改成延迟输出则正确。
想问下这种问题怎么解决?好像也没有props完全载入后的生命周期?
补充
开了个新工程对照了一下找到了真正的原因。。例子举得不对已做修正。
应该是父组件ajax获取了后台数据,这个异步获取的数据在子组件中得不到及时呈现,请问这个问题如何解决。
其实一个很简单的做法就是,当larger获取到数据之后,再开始渲染子组件my-editor
做法就是在my-editor上加v-if