У меня были проблемы с диаграммой пончиков, используя chart.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();
}
Я пытался уничтожить предыдущий график, прежде чем обновлять его, но безрезультатно. Есть идеи?
Вам действительно нужно уничтожить предыдущую диаграмму. Возможно, попробуйте следующее:
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();
}
Кажется, что ваша переменная диаграммы обновляется каждый раз, когда функция вызывается и, следовательно, никогда не будет существовать при вызове plotchart(). Порекомендовал бы вам объявить переменную до и привести ее в правильную область действия, если она существует. Это, похоже, ядро вашей проблемы
window.myChart = ...
, вы также можете объявить это вне функции