Когда полностью загружена highchart?
Я видел этот код: http://jsfiddle.net/AVygG/
Мне любопытно, когда смысл в том, что highchart загружается полностью? Я видел в документах высокой четкости, что события: load: должны делать магию, позволяющую вызвать функцию обратного вызова при полной загрузке highchart.
Если он был полностью загружен, можно ли предположить, что в диаграмме var уже должны быть значения, когда появляется предупреждение? Является ли это хорошей основой того, что график уже загружен?
Причина, по которой я спросил, это то, что я работаю над другим кодом, который, по-видимому, не полностью загружается в IE8. Похоже, что на высоких картах потенциально может быть состояние гонки при загрузке его элементов.
Спасибо!
$(function () {
// create the chart
var chart = new Highcharts.Chart({
chart: {
renderTo: 'container',
events: {
load: function(event) {
alert ('Chart loaded');
}
}
},
xAxis: {
},
series: [{
animation: false,
data: [29.9, 71.5, 106.4, 129.2, 144.0, 176.0, 135.6, 148.5, 216.4, 194.1, 95.6, 54.4]
}]
});
});
Ответы
Ответ 1
Highcharts имеет функцию обратного вызова
var chart = new Highcharts.Chart({
chart: {
renderTo: 'container',
events: {
redraw: function(event) {
alert ('Chart loaded');
}
}
},
series: [{
animation: false,
data: [29.9, 71.5, 106.4, 129.2, 144.0, 176.0, 135.6, 148.5, 216.4, 194.1, 95.6, 54.4]
}]
},function(chart){
alert('LOADED');
});
Ответ 2
Попробуйте с событием redraw
. Это событие запускается после загрузки, но также после добавления серии и изменения размера диаграммы.
$(function () {
// create the chart
var chart = new Highcharts.Chart({
chart: {
renderTo: 'container',
events: {
redraw: function(event) {
alert ('Chart loaded');
}
}
},
series: [{
animation: false,
data: [29.9, 71.5, 106.4, 129.2, 144.0, 176.0, 135.6, 148.5, 216.4, 194.1, 95.6, 54.4]
}]
});
});
Повторить событие из официальной справки Highcharts: http://api.highcharts.com/highcharts#chart.events.redraw
И демо: http://jsfiddle.net/gh/get/jquery/1.7.2/highslide-software/highcharts.com/tree/master/samples/highcharts/chart/events-redraw/
Ответ 3
В функции обратного вызова нагрузки вы можете получить доступ к объекту диаграммы с помощью указателя "this".
events: {
load: function(event) {
alert ('Chart loaded with series :'+ this.series[0].name);
console.log(this);
}
}
JsFiddle: http://jsfiddle.net/msjaiswal/AVygG/25/
Ответ 4
На это был дан ответ, но недостаточно решительно. В документации по высоким стандартам явно указано
... В большинстве случаев диаграмма построена в одном потоке, но в Интернете Explorer версии 8 или менее диаграмма иногда инициируется до документ готов, и в этих случаях объект диаграммы не будет закончен непосредственно после вызова new Highcharts.Chart()
. Как Последствия, код, который опирается на недавно построенный объект диаграммы, должен всегда запускается в обратном вызове.
Итак, обращение к объекту диаграммы в IE8 должно выполняться в обратном вызове, т.е. new Highcharts.Chart(options, function(chart) { ... })
. Вы также можете использовать function() { ... }
и использовать this
в функции.
Что касается вашей конкретной проблемы, загрузите сообщение. Я должен был сделать это в обратном вызове, но он работает.
chart1 = new Highcharts.Chart(options, function(){
this.showLoading();
});
Ответ 5
В угловом проекте мне пришлось использовать функцию setTimeout()
чтобы ширина работала правильно, как показано ниже:
setTimeout(()=>this.chart.reflow())