在created中发起ajax请求,并给data中的值进行了初始化,随后想要在mounted使用初始化后的值,结果却怎么也获取不到,上代码
本来是这样的:
--data数据:
export default {
name: "Index",
data() {
actualproduct:'',// 此参数为后台数据库查询到的参数
planproduct:'0',//此参数为我目前赋值的参数
}
}
--created/mounted
created() {
this.getMonthTarget();
this.getMonthKpi();
},
mounted: function () {
this.changeColor();//此方法为我要用this取的data里面的数据
},
--methods
changeColor(){
//如果实际产量>计划产量,显示绿色,如果实际产量<计划产量,显示红色
if(parseInt(this.actualproduct) > parseInt(this.planproduct)){
console.log('actualproduct是:',actualproduct) //actualproduct是:underfined 或者是直接空白只输出actualproduct是:
document.getElementById("actualProduct").style.color = "#42b983"
}else {
document.getElementById("actualProduct").style.color = "#FF9999"
};
},
修改后的代码(仅这两处需要修改)
created() {
this.getMonthTarget();
this.getMonthKpi();
},
mounted: function () {
--加延时,将请求放在mounted中
setTimeout(() => {
this.changeColor();
}, 1000)
},
在网上搜索了很久问题出现的原因,在执行created然后发送请求的时候,mounted并不会等这次请求结束才去执行,而是直接就去执行,而此时data中的值还没有被赋值,所以拿不到。期间我还试过将 this.changeColor()方法写到created里面去,但还是不行。