2014-09-10 1 views
3

Я использую c3.js для графического отображения, и все работает должным образом.Как получить ссылку на объект из селектора для диаграмм JS C3

Однако, я хотел бы получить доступ к API из других сценариев, то есть позвонить resize и т.д. ...

, если я использую:

var chart = c3.generate({ ... }); 

Затем я могу получить доступ к объекту диаграммы и это API как:

chart.resize(); 

Однако, если у меня нет доступа к объекту диаграммы, как это еще один сценарий, я могу получить элемент HTML DOM (с помощью JQuery):

$(".c3").each(function(i, chart) { 
    // Here I want to do something like chart.resize(); 
    // But chart is just the DOM reference, not the chart variable 
    // I need something like c3.get(chart)???? 
}); 

chart Но в цикле является DOM объектом, а не var chart сделаны из c3.generate.

Любые идеи, как я могу получить этот объект? Документация не совсем закончена;)

ответ

7

Как вы уже используете JQuery, вот решение, использующее jQuery data:

Сохранить ссылку на графике, шпонкой на его DOM элемента:

var selector = '#some-selector'; 
var chart = c3.generate({ 
    bindTo: selector, 
    // ... 
}); 

$(selector).data('c3-chart', chart); 

Чтобы получить доступ к диаграммам для каждого элемента .c3:

$('.c3').each(function() { 
    var chart = $(this).data('c3-chart'); 
}); 
+0

работает как шарм, JQuery всегда есть эти полезные драгоценные камни! – RemarkLima

+0

@RemarkLima это не работает для меня, я все равно получаю элемент DOM –

+0

Вы добавляете объект диаграммы к данным? Убедитесь, что не добавлен селектор ... – RemarkLima

Смежные вопросы