ApexCharts.exec updateSeries работает только один раз

У меня есть проблема, которую я пытаюсь решить с помощью Apexcharts.

просто для примера, я действительно не могу опубликовать пример, поскольку код диаграммы несколько велик и полагается на веб-сокеты для получения данных, поэтому я постараюсь изо всех сил объяснить поток с надеждой, что кто-то может знать, что я здесь делаешь что-то не так, приношу свои извинения заранее.

Поток приложения

  1. Пользователь может просматривать результаты опроса (это с помощью диаграмм вершин). Это модальное окно, которое открывается и создает на лету всплывающее окно, содержащее div диаграммы, например

    <div class="poll[dynamic number"></div>  
    
  2. У пользователя открыто окно результатов (оно отображается нормально), и приходит новый ответ.

  3. данные поступают, и мы используем

    ApexCharts.exec(chartName, 'updateSeries', [{
       data: updateData
     }], true);
    

Обновить данные. Это отлично работает в первый раз, однако, если мы закроем модальное окно, снова откроем его, диаграмма будет отображаться нормально, но новые ответы не обновят диаграмму.

Глядя на код, нет повторяющихся идентификаторов, поэтому, когда модальное окно открыто, оно полностью заменяет содержимое всплывающего окна, как уже отмечалось, диаграмма отображается каждый раз отлично, но последующие updateSeries не работают. печать на консоли показывает, что данные поступают, похоже, он может получить объект диаграммы, но обновления, похоже, не работают.

При перезагрузке страницы обновления будут работать, поэтому я думаю, что это может быть связано с тем, как она инициирована, однако попытки уничтожить диаграммы до того, как и т. Д., Ничего не изменит.

Я знаю, что это очень сложно отладить, не увидев, и если бы я мог опубликовать пример, я бы это сделал. Я предполагаю, что вопрос действительно в том, должны ли апекс-диаграммы updateSeries работать с несколькими динамически сгенерированными диаграммами? Если нет, то почему это срабатывает один раз и больше никогда?


person proxim0    schedule 28.03.2021    source источник


Ответы (1)


Хорошо, на случай, если кто-то еще столкнется с этой проблемой, я смог решить эту проблему.

В основном в нашем коде мы повторно использовали переменную, а затем визуализировали диаграмму, однако при этом исходный объект диаграммы не уничтожался до создания нового. (возможно, эта диаграмма вершины должна уловить это, поскольку можно было бы подумать, что chartID будет уникальным, и при создании новой диаграммы он сначала будет искать chartID, прежде чем создавать новый объект)

Как бы то ни было, мы переместили это в их собственные динамические переменные, чтобы мы могли сначала проверить, есть ли там диаграмма, и всегда уничтожать этот объект перед созданием нового.

person proxim0    schedule 28.03.2021