Подтвердить что ты не робот

Когда полностью загружена 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]     
    }]
});

});

4b9b3361

Ответ 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())