2012-03-12 5 views
5

Estoy intentando crear un generador de gráficos. Tengo entradas de usuario para el Título y la ubicación de la leyenda. Quiero que un usuario escriba un título y cuando haga clic (desenfoque) el gráfico que se actualizará con lo que escribieron.Render Highcharts después de etiquetas actualizadas por el usuario

El problema es que la tabla se representa por primera vez, sin embargo, nunca puedo obtener el carácter para representar nuevamente. Aquí hay un resumen rápido del código.

$('#legendlocation-select').blur(function updateChartLegend(){ 
console.log($('#legendlocation-select').val()); 
if($('#legendlocation-select').val()==='none'){ 
    chartData.legend.enabled = 'false'; 
}else{ 
    chartData.legend.enabled = 'true'; 
    chartData.legend.align = $('#legendlocation-select').val(); 
} 
renderChart(); 
}); 
function renderChart(){ 
if(chart == undefined){ 
    console.log("First Draw"); 
    chart = new Highcharts.Chart(chartData); 
}else{ 
    console.log("Redraw"); 
    chart.destroy(); 
    chart = new Highcharts.Chart(chartData); 
    chart.redraw(); 
} 
}; 

El diagrama representa la primera vez y luego es simplemente un área blanca en blanco la segunda vez. ¿Algunas ideas? chartData es una variable con todas las opciones que se representan correctamente.

aquí es un jsFiddle que muestra el tema http://jsfiddle.net/zVjrb/3/

+0

Para utilizar los mismos datos hacen lo siguiente. Modifique la sección chart.options. Luego pasa esto a Highcharts. var chart = Highcharts.chart (chart.options) – Sean

Respuesta

10

Descubierto la Emisión. Aquí se detalla: http://highslide.com/forum/viewtopic.php?f=12&t=15255

Básicamente, la función Highcharts.charts borra los datos de la serie del objeto de opciones original.

Este es mi código de trabajo:

var chart; 
var chartData = { /* you chart data goes here */ }; 
$('#legendlocation-select').blur(function updateChartLegend(){ 
    console.log($('#legendlocation-select').val()); 
    if($('#legendlocation-select').val()==='none'){ 
    chart.options.legend.enabled = false; 
    }else{ 
    chart.options.legend.enabled = true; 
    chart.options.legend.align = $('#legendlocation-select').val(); 
    } 
    renderChart(); 
}); 

function renderChart(){ 
    //console.log(chartData); 
    if(chart == undefined){ 
    console.log("First Draw"); 
    chart = new Highcharts.Chart(chartData); 
    }else{ 
    console.log("Redraw"); 
    chart.options.chart.animation = false; 
    chart = new Highcharts.Chart(chart.options); 
    chart.render(); 
    } 
}; 
+2

Tuve problemas similares al cargar un Highchart en un cuadro de diálogo de jquery-ui - Terminé resolviéndolo al borrar el diálogo div llamando específicamente a $ ('. highcharts-container') .removeClass(). Espero que esto ayude a otra persona y les ahorre una hora o así que se desperdicie en mí. – Ross

Cuestiones relacionadas