Получение обратного вызова не является функцией в JS с Highcharts - PullRequest
0 голосов
/ 30 июня 2019

Я не могу обновить значения min / max / avg в Highcharts при выполнении масштабирования.Я пытаюсь объединить эти две части кода:

1. Обновление min / max / avg ----> http://jsfiddle.net/d_paul/supgh9c1/4/

2. Загрузить таблицы БД на основе увеличения ---> https://jsfiddle.net/gh/get/library/pure/highcharts/highcharts/tree/master/samples/stock/demo/lazy-loading/

Таким образом, код, показанный здесь, производит «обратный вызов - это не функция».Но если я удаляю «e» (это событие, которое проходят верхние диаграммы, когда пользователь выбирает масштабирование) в функции after_Set_Extreme, я получаю, что «e» не определено в этой функции.И если я добавлю «e» в качестве передаваемого параметра (e, updateLegendLabel), я получу ту же ошибку, что и раньше, но теперь в строке afterSetExtremes.Таким образом, кажется, что e (событие) не распознается.Но если вы видите ссылку № 2 выше, afterSetExtremes вызывается без передачи «e», но ожидается в функции.См. Определение функции. Может кто-нибудь помочь мне понять, что здесь не так?

Это высокие графики при работе с настоящим графиком

$('#container2').highcharts('StockChart', {
      chart: {
        zoomType: 'x',
        events: {
          load: updateLegendLabel
        }
      },
      ......

      xAxis: {
        events: {
          afterSetExtremes: after_Set_Extremes(updateLegendLabel),
        },
        .....


        function after_Set_Extremes(e, callback) {

          processed_json_temperatura.length = 0;
          processed_json_presion.length = 0;
          processed_json_humedad.length = 0;
          processed_json_lluvia.length = 0;
          processed_json_horas_frio.length = 0;

          if (typeof(e.rangeSelectorButton) !== 'undefined') {
            ........
            callback();
          }

          function updateLegendLabel() {
            var chrt = !this.chart ? this : this.chart;
            //  alert('entre updatelegend')
            console.log(this);
            chrt.update({
                  ....
                }

1 Ответ

0 голосов
/ 01 июля 2019

Объединение этих двух функций кажется очень простым, пожалуйста, проверьте этот пример: https://jsfiddle.net/BlackLabel/oh3ubdLv/

Однако, в вашем случае after_Set_Extremes функция вызывается только один раз, когда диаграмма инициализируется.Вам нужно создать дополнительную функцию для передачи аргументов:

Highcharts.stockChart('container', {
    ...,
    xAxis: {
        events: {
            afterSetExtremes: function(e) {
                after_Set_Extremes(e, updateLegendLabel)
            }
        }
    }
});


function after_Set_Extremes(e, callback) {
    callback();
}

function updateLegendLabel() {
    console.log('callback');
}

Демонстрационная версия: http://jsfiddle.net/BlackLabel/ebdtry20/

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...