2012-03-12 9 views
5

मैं एक चार्ट निर्माता बनाने की कोशिश कर रहा हूं। मेरे पास शीर्षक और शीर्षक के स्थान के लिए उपयोगकर्ता इनपुट है। मैं चाहता हूं कि उपयोगकर्ता एक शीर्षक में टाइप करें और जब चार्ट टाइप (ब्लर) चार्ट को उनके द्वारा टाइप किए गए अपडेट के साथ अपडेट किया जाए।उपयोगकर्ता अद्यतन लेबल के बाद उच्चतर रेंडर

समस्या यह है कि चार्ट पहली बार प्रस्तुत करता है, हालांकि मैं फिर से प्रस्तुत करने के लिए चार नहीं प्राप्त कर सकता। कोड का एक त्वरित सारांश यहां दिया गया है।

$('#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(); 
} 
}; 

चार्ट पहली बार प्रस्तुत करता है और फिर दूसरी बार केवल एक खाली सफेद क्षेत्र होता है। कोई विचार? चार्टडाटा एक चर है जिसमें सभी विकल्पों के साथ सही ढंग से प्रस्तुत किया जाता है।

यहाँ एक JSFiddle कि इस मुद्दे को http://jsfiddle.net/zVjrb/3/

+0

एक ही डेटा निम्नलिखित करना का उपयोग करें। Chart.options अनुभाग को संशोधित करें। फिर इसे हाईचार्ट्स में पास करें। var chart = Highcharts.chart (chart.options) – Sean

उत्तर

10

मुद्दा पता लगा पता चलता है। यहां विस्तृत: http://highslide.com/forum/viewtopic.php?f=12&t=15255

असल में हाईचरट्स.एक्ट्स फ़ंक्शन मूल विकल्प ऑब्जेक्ट से श्रृंखला डेटा को साफ़ करता है।

यह मेरा काम कर कोड है:

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

मुझे jquery-ui संवाद बॉक्स में हाईचार्ट लोड करते समय भी इसी तरह की समस्याएं थीं - मैंने संवाद div को विशेष रूप से $ ('। हाईचार्ट्स-कंटेनर') को कॉल करके इसे हल कर दिया। .removeClass()। उम्मीद है कि यह किसी और की मदद करता है और मुझे एक घंटा बचाता है या इसलिए यह मुझ पर बर्बाद हो जाता है। – Ross

संबंधित मुद्दे