Как я могу взаимодействовать с Amcharts от внешних функций создания диаграмм?

Если я создаю амхарт, и в создании я установил скрытое значение одного из наборов данных в значение true:

function loadChart(container, chartstodisplay) {

    AmCharts.ready(function () {
        //Do all my regular chart creation here

        //but make sure hidechart shows up hidden
        if(key == 'hidechart'){
            graphs[key].hidden = true;
        }                           

        //now write the chart
        chart.write(container);
    });
}

Теперь я позже на моей странице, и у меня есть html, который связан с диаграммой и т.д. Например, у меня есть ссылка, что если вы наведите курсор мыши, я хочу, чтобы "hidechart" теперь виден, пожалуйста, поймите эта функциональность полностью отделена от блоков легенд, создаваемых AMchart, которые вы можете щелкнуть, чтобы скрыть/показать, это отдельно на странице html.

$(document).ready(function(){

    $('#some_parent').on('click','span.unhide',function(){
        //now go back to the hidden chart element from above and change
        graph['hidechart'].hidden = false;
        //obviously that doesn't work
     })

})

Итак, есть ли какой-либо контекст, в котором я могу достичь и влиять на диаграммы и графики? Как мне подойти к этому?

Ответ 1

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

Я предполагаю, что у вас есть массив графиков, которые вы добавляете к диаграмме, сначала убедитесь, что массив графов и объект диаграммы являются глобальными, поэтому вне функций (т.е. до loadChart) объявите их:

var chart;
var graphs;

Затем следуйте рекомендациям документации в hidden:

Указывает, скрыт ли граф. Не используйте это, чтобы показать/скрыть график, вместо этого используйте методы hideGraph (graph) и showGraph (graph).

Документ для showGraph и hideGraph здесь здесь.

Итак, вам нужно обновить свою подставку для скрытия (после добавления графика):

 //but make sure hidechart shows up hidden
     if (key == 'hidechart'){
     chart.hideGraph(graphs[key]);
 }           

Наконец, вы можете показать, что, обратившись к двум глобальным объектам:

 $('#some_parent').on('click','span.unhide',function(){
     //now go back to the hidden chart element from above and change
     chart.showGraph(graphs['hidechart']);
     //should work now
 })

Я тестировал это локально, и он работает, если это не поможет рассмотреть возможность размещения немного большего количества кода или создания jsFiddle в качестве примера. Также проверьте этот ответ на форумах.

Ответ 2

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

введите описание изображения здесь

graph.hidden = true;
chart.addGraph(graph);

Это тоже помогает, но будет медленно

chart.write("chartdiv");
chart.hideGraph(graph)