2017-07-31 112 views
1

我使用chart.js在圆环图中遇到了一些麻烦。问题是当我更新图表,并且当我将鼠标悬停在图表上时,有时会显示旧图表。这里是我打电话给功能图的地方:图表js显示悬停时的旧图表数据

<select class="form-control" id="ddlCategory" onchange="plotChart()">  
</select> 

function plotChart(){ 
// removed code to retrieve data from firebase 
var chart; 
var ctx = document.getElementById('donutChart').getContext("2d"); 
var data = {}; 
var opt = { 
      type: "doughnut", 
      data: data, 
      options: options 
     }; 

     if (chart) { 
      chart.destroy(); 
      chart.clear(); 
     }else{ 
      chart = new Chart(ctx,opt); 
     } 
for(var i = 0; i < labelData.length; i++){ 
     chart.config.data.labels.push(labelData[i]); 
    } 
chart.update(); 
} 

我试图摧毁之前的图表,我更新它,但无济于事。有任何想法吗?

回答

1

确实需要销毁上一张图表。也许有以下尝试:

function plotChart() { 
    // removed code to retrieve data from firebase 

    var ctx = document.getElementById('donutChart').getContext("2d"); 
    var data = {}; 
    var opt = { 
     type: "doughnut", 
     data: data, 
     options: options 
    }; 

    if (chart) chart.chart.destroy(); 
    window.chart = new Chart(ctx, opt); 

    for (var i = 0; i < labelData.length; i++) { 
     chart.config.data.labels.push(labelData[i]); 
    } 
    chart.update(); 
} 
+0

你在哪里声明myChart变量? – hyperfkcb

+0

这里>'window.myChart = ...',你也可以在函数 –

+0

之外声明我正在获取myChart变量是未定义的错误信息。另外,通过声明myChart,这是否意味着我的chart.update()也应该更改为myChart.update()? – hyperfkcb

0

看来你图表变量是重新声明每次调用函数时,当你打电话plotchart因此将不会存在()。如果存在,建议您先声明变量并将其放入正确的范围。这似乎是你的问题的核心

+0

所以你的意思是声明函数外的图表变量?但是它不会导致未声明的变量错误?上面给出的 – hyperfkcb

+0

确保您使用的是最新版本,并且是在外部声明 – BanelingRush

相关问题