Я использую Chart.js (в последней версии 2.7), и если на моей странице есть несколько диаграмм, у меня проблема с подсказкой.
На этой скрипке: https://jsfiddle.net/b4up8kw2/, у меня есть 2 диаграммы, но если вы посмотрите, всплывающая подсказка первой диаграммы (слева) показывает значения второй диаграммы.
Я использую этот код для обновления набора данных диаграмм:
var configs = [];
var charts = [];
configs['chart1'] = config;
configs['chart2'] = config;
// update chart - randomScalingFactor() return random integer
function updateChart(chart) {
// set new values
configs[chart].data.datasets.forEach(function(dataset) {
dataset.data = [randomScalingFactor(), randomScalingFactor(), randomScalingFactor(), randomScalingFactor(), randomScalingFactor()]
});
charts[chart].update();
}
$(function() {
charts['chart1'] = new Chart($('#canvas-1')[0].getContext('2d'), configs['chart1']);
charts['chart2'] = new Chart($('#canvas-2')[0].getContext('2d'), configs['chart2']);
for (var key in charts) {
updateChart(key);
}
});
Я не понимаю, так как использую 2 отдельные переменные конфигурации. Это ошибка моего кода или плагина?



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Я решил вашу проблему с clone вашей конфигурации для каждого графика. В настоящее время вы визуализируете диаграммы с помощью одного объекта config, который является общим, и при визуализации второй диаграммы конфигурация изменяется. Поэтому вам следует клонировать конфигурацию для каждого графика.
Это мое решение (разветвленное и отредактированное из вашего jsfiddle) https://jsfiddle.net/huynhsamha/bdvw1e98/
const clone = (o) => JSON.parse(JSON.stringify(o))
var configs = {
chart1: clone(config),
chart2: clone(config)
};
<script async src = "//jsfiddle.net/huynhsamha/bdvw1e98/embed/js,html,css,result/dark/"></script>
Чем ты так много