Highcharts / jQuery - уничтожать и перестраивать график с оригинальными настройками - PullRequest
10 голосов
/ 24 октября 2011

На основе информации в этой теме: Реализация собственного состояния - INACTIVE_STATE?

Я построил диаграмму, которая соответствует моим потребностям - jsfiddle

Я добавил несколько пользовательских элементов управления, чтобы пользователь мог показывать / скрывать все серии и отмечать / снимать отметку со всех серий.

Все это отлично работает.

Последняя часть, которую я хочу сделать, - позволить пользователю сбросить график с исходными параметрами.

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

Итак, мой вопрос (ы) -

  1. это правильный способ уничтожить и перестроить карту, или есть лучший способ?
  2. если это способ сделать это, то как мне заставить мои функции show / hide / check / uncheck продолжать работать после этого?

Код для сброса графика находится здесь:

//reset the chart to original specs
$('#resetChart').click(function(){
    chart1.destroy();
    chart1 = new Highcharts.Chart(optionsChart1,highlightSer);
});

highlightSer - это функция обратного вызова для выделения определенных серий.

пример кода, который больше не работает после:

var chart = chart1;
$('#showAll').click(function(){
        for(i=0; i < chart.series.length; i++) {
        chart.series[i].show();
    }
});

спасибо!

Ответы [ 2 ]

17 голосов
/ 25 октября 2011

1) это правильный способ уничтожить и перестроить диаграмму, или есть лучший способ?

Это единственный способ, и Highcharts достаточно умен, чтобы вы нене нужно беспокоиться о любых утечках памяти.

2) если это способ сделать это, то как мне заставить мои функции show / hide / check / uncheck продолжать работать после этого?

Вы воссоздаете диаграмму, но не назначаете ее снова переменной chart.

$('#resetChart').click(function(){
    chart1.destroy();
    chart1 = new Highcharts.Chart(optionsChart1,highlightSer);
    chart = chart1; // <-------- Add this line here.
});
2 голосов
/ 25 октября 2011

Есть ли причина для назначения графика новой переменной здесь?

var chart = chart1;

chart больше не будет указывать на график после того, как вы его уничтожите.Если вы просто используете chart1, который вы переназначаете, все , кажется, работает нормально .Или я что-то упустил?

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