Как я могу взаимодействовать с 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)