我创建了一个试图显示nv.d3.js饼图的DJango / ReactJS网站。当我添加代码以显示饼图,将数据数组直接传递到代码中时,饼图正确地显示在网站上。但是,当我使用d3.json(url, callback)
从URL检索JSON(由Django views.py提供)并将其作为数据传递到饼图时,我收到错误。
nvd3代码是:
createPieChart() {
const node = this.node
nv.addGraph(function() {
var chart = nv.models.pieChart()
.x(function(d) { return d.label })
.y(function(d) { return d.value })
.showLabels(true);
d3.select(node)
.datum(getPieData())
.transition().duration(350)
.call(chart);
return chart;
})
}
getPieData()
功能是:
function getPieData() {
// return (d3.json(url, function(error, rawData) {
// if (error) {
// console.log("error = " + error)
// return;
// }
// else{
// return rawData;
// }
// }
// )
// )
return [{"label": "R", "value": 822}, {"label": "H", "value": 1}];
}
请注意,在上面的代码片段中,我注释掉了有问题的代码。我上面的回报是有效的。现在,如果我转到Django提供的上面的URL,它会在浏览器中返回与此类似的以下数据(并且在控制台中,我在传入数据后添加了一个| safe过滤器):
[{"label": "R", "value": 822}, {"label": "H", "value": 1}]
我得到的错误是:
未捕获类型错误:data.map不是函数
我希望这会将数据传递给addGraph
函数并正确显示图表,就像我将数据直接传递给图形函数一样......
我尝试在rawData.map()
函数中返回getPieData
,但这也不起作用。我得到了同样的错误。