wx.getStorage({ key: 'scores', success: (res) => { // 把字符串转换回数组 let scores = JSON.parse(res.data); // 同步 data this.setData({ scores: scores }); console.log(scores) console.log(this.data.chartData) let categories = []; for (let i = 0; i < scores.length; i++) { categories.push("第" + (i + 1).toString() + "次"); } // set the chartData here let data = { categories: categories, series: [ { name: "分数", data: scores // pass the scores array here }, ] }; this.setData({ chartData : JSON.parse(JSON.stringify(data))//深拷贝数据,防止出现问题 }) console.log(this.data.chartData) } })为什么console.log(this.data.chartData)为空
时间: 2024-03-15 17:47:00 浏览: 59
根据您提供的代码,我猜测可能是因为 `wx.getStorage` 是异步方法,需要等待数据获取成功后才能执行 `setData` 方法,而在 `setData` 方法之前 `console.log(this.data.chartData)` 的输出结果为空。您可以在 `success` 回调函数中将 `console.log(this.data.chartData)` 的代码移动到 `setData` 方法的后面,这样就能看到正确的输出结果了。例如:
```
wx.getStorage({
key: 'scores',
success: (res) => {
let scores = JSON.parse(res.data);
this.setData({
scores: scores
});
let categories = [];
for (let i = 0; i < scores.length; i++) {
categories.push("第" + (i + 1).toString() + "次");
}
let data = {
categories: categories,
series: [{
name: "分数",
data: scores
}, ]
};
this.setData({
chartData: JSON.parse(JSON.stringify(data))
}, () => {
console.log(this.data.chartData);
});
}
})
```
在这个例子中,我将 `console.log(this.data.chartData)` 移动到了 `setData` 方法的回调函数中,这样就能够在数据被更新后再次输出结果了。
阅读全文