我想檢查我與highcharts做出圖表,如果他們有負荷每任何數據重新繪製圖形的。檢查數據的所有圖表和隱藏那些有沒有
我做了這個代碼工作:
(function (H) {
var chartPrototype = H.Chart.prototype;
// Hide graph if there are no data, show it othervise
function handleNoData() {
name = $(".graph_identifier").attr("data-name");
if (this.series.length > 0 && this.series[0].data.length > 0) {
$('#message-'+name).fadeOut(250, function(){
$('#container-'+name+', #table-'+name).fadeIn(250);
});
} else {
$('#container-'+name+', #table-'+name).fadeOut(250, function(){
$('#message-'+name).fadeIn(250);
});
}
}
// Add event listeners
chartPrototype.callbacks.push(function (chart) {
H.addEvent(chart, 'load', handleNoData);
H.addEvent(chart, 'redraw', handleNoData);
});
}(Highcharts));
的問題是,這個代碼的工作只有當你每頁單圖。但在我的主頁上有5個不同的圖表,當其中一個圖表沒有數據時,它隱藏所有圖表。
我試圖修改代碼,並通過圖表到handleNoData
功能是這樣的:
H.addEvent(chart, 'load', handleNoData(chart));
H.addEvent(chart, 'load', printPage);
H.addEvent(chart, 'redraw', handleNoData(chart));
但後來我得到這個錯誤:
Uncaught TypeError: Cannot read property 'call' of undefined
我想它,因爲只有你可以做的事情是傳遞函數名稱而不是參數(如果可以的話,那麼我沒有發現他們的API如何)。
現在我不得不用這個每一個曲線圖,這是不是我想要什麼,也不能正確檢測重繪:
chart = $("#container").highcharts();
$(chart).on('load redraw', handleNoData(chart));
有誰知道知道如何實現這一目標?
我花了很長時間挖掘他們的API和谷歌,但我找不到任何東西。
謝謝。
編輯:
我設法找到問題並解決它。它是圖形標識符...函數本身按預期工作。