Проблема с глобальными переменными

106
23 мая 2019, 22:10

У меня есть функция, которая создает график по Chart.js. У меня есть некоторые проблемы с добавлением новым данных и апдейтом. Нашел решение использовать destroy() и создавать новый, но для этого нужно сохранять в переменную состояние т.е существует отрисованный Canvas или нет. Я поступил таким образом:

let currentChart;
let currentResponse;
const createChart = response => {
      if (typeof currentChart != 'undefined') {
         currentChart.destroy();
    }
  //много кода
}

Также у меня есть самописные плагины для Chart.js где вызывается внешняя функция, но как аргумент берет именно currentResponse т.е из глобальной переменной.

Chart.plugins.register({
          afterDatasetsDraw: function(chart) {        
              document.getElementById('myChart').onclick = function(e) {
                  let activePoint = chart.getElementsAtEvent(e);
                  let selectedPoint = activePoint[0];
                   weather.showWeatherData(currentResponse, selectedPoint._index);
                }
          },
        })

Плагины объявлены внутри функции. Мне предложили сделать это все отдельным модулем со своей областью видимости, но я немного не понимаю как это должно выглядеть?

READ ALSO
Перенести данные из XML в параграфы HTML

Перенести данные из XML в параграфы HTML

Не получается перенести данные из XML в параграфы HTMLПока такое:

97
Вернуть объект на прежнюю позицию SVG

Вернуть объект на прежнюю позицию SVG

Есть объект, который я анимирую с помощью animateMotionПосле клика на кнопку остановки анимации stop объект должен вернуться на прежнее место, где...

102
Реализация highlight

Реализация highlight

Нужно реализовать подсветку текста в div при вводе в input без использования сторонних плагиновВ существующем коде надо решить две проблемы:

100
Анимация текста jQuery

Анимация текста jQuery

Как реализовать это условиеПодскажите: Заголовок красного цвета движется слева направо, уменьшается и увеличивается по 2 раза соответственно,...

151