Chart.js无法将数据集推送到动态创建的图表中

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

我目前正在制作一个Web应用程序,用户可以在其中添加自己的图表面板,然后可以将某些数据库表拖到所述面板中以使其显示在图表中。我的问题是我无法将数据集推送到动态创建的图表中,因为保存图表的变量没有直接写在文档中,所以我用来推送这些数据集的函数无法像这样推送到变量通常。

这里是制作新面板和图表的功能:

function addnewchart(x) {
        eval("ctx" + x + "= document.getElementById('linechart" + x + "').getContext('2d');");  
        eval("var lineChart" + x + " = new Chart(ctx" + x + ", {type: 'line',data: {labels: '',datasets: ''},options: {legend: {display: false},scales: {xAxes: [{gridLines: {display: false},scaleLabel: {display: true,labelString: ''}}],yAxes: [{ticks: {beginAtZero: true},scaleLabel: {display: true,labelString: ''}}]}}});");
    };

这是将数据集推送到那些图表的功能:

function addData(chart, Datalabel, Tabledata) {
        datasintable.push(Tabledata + "S");
        var curColor = randomColor();

        var newDataset =
        {
            label: Datalabel,
            fill: false,
            backgroundColor: curColor,
            borderColor: curColor,
            data: Tabledata
        }

        console.log(chart,Datalabel,Tabledata, newDataset);

        chart.data.labels.push(['test1', 'test2', 'test3', 'test4', 'test5']);
        chart.data.datasets.push(newDataset);
        chart.update();
    }

我应该如何解决这个问题?

javascript chart.js
1个回答
1
投票

显然,解决此问题的方法不是在addData()中使用可变图表,而是在处理动态创建的图表时使用window[chartname + index]。我通过尝试同时使用eval()和window []指向图表发现了这一点。 Eval根本不起作用,但是Window成功了。

示例:

var number = 1;
window['linechart' + number];

这将调用图表折线图1。

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