在Chart.js中映射数据(来自getJSON响应)

问题描述 投票:1回答:1

我将数据解析到我的图表时遇到问题。当然,这应该包含在我使用getJSON的自动进程中,并且不想使用ajax,所以我有:

$.getJSON('file.json').done( function (results) {  

        var labels = [];
        var data = [];

        var labels = results.map(function (item) {
            return item.updatedLaels
        });

        var data = results.map(function (item) {
            return item.updatedData;
        });

        console.log(labels)
        console.log(data)
    });

所以当然标签和数据以适当的方式记录到控制台,例如:

(5) [1,2,3,4,5]

但是如何在这部分中使用它:

var myChart = new Chart(ctx, {
        type: 'line',
        data: {
            labels: labels,
            datasets: [{
                label: 'Example',
                data: data,
                borderColor: 'rgba(75, 192, 192, 1)',
                backgroundColor: 'rgba(75, 192, 192, 0.2)',
            }]
        },
    });

因为index.html生成没有数据的空图表。如何以正确的方式映射标签和数据?

javascript jquery chart.js
1个回答
2
投票

labelsdata变量是你的undefined$.getJSON done函数之外的callback

您可以在done中调用函数,即createChart(labels, data),或者在done中为您带来图表代码

$.getJSON('file.json').done( function (results) {  

        var labels = [];
        var data = [];

        var labels = results.map(function (item) {
            return item.updatedLabels
        });

        var data = results.map(function (item) {
            return item.updatedData;
        });

        // Create chart
        createChart(labels, data);

});
function createChart(labels, data) {
    var myChart = new Chart(ctx, {
        type: 'line',
        data: {
            labels: labels,
            datasets: [{
                label: 'Example',
                data: data,
                borderColor: 'rgba(75, 192, 192, 1)',
                backgroundColor: 'rgba(75, 192, 192, 0.2)',
            }]
        },
    });

}
© www.soinside.com 2019 - 2024. All rights reserved.