出现这种情况的原因 :因为父组件中的要就要传递的props属性 是通过发生ajax请求回来的, 请求的这个过程是需要时间的,但是子组件的渲染要快于ajax请求过程,所以此时 created 、mounted这样的只会执行一次的生命周期钩子,已经执行了,但是props还没有流进来(子组件),所以只能拿到默认值。
解决方法 :
①、watch处理
监听 Data 的值,当它由空转变时就会触发,这时候就能取到了,拿到值后要做的处理方法也需要在 watch 里面执行
export default {
props: ['Data'],
data(){
return {
cData: []
}
},
watch: {
//正确给 Data 赋值的 方法
chartData: function(newVal,oldVal){
this.cData = newVal; //newVal即是chartData
newVal && this.draw(); //newVal存在的话执行draw函数
}
},
methods: {
draw(){
//执行其他逻辑
}
},
mounted() {
//在created、mounted这样的生命周期, 给 this.Data赋值会失败,错误赋值方法
}
}
②、加上 v-if 来判断数据是否