2011-08-08 17 views
14

क्या कोई भी onReady (या इसी तरह) उच्च न्यायालयों के लिए तैयार कार्यक्रम है?हाईचार्ट्स ऑन रीडी इवेंट?

वर्तमान में, Highcharts केवल प्रदान करता है addSeries, click, load, redraw, और selection चार्ट वस्तु के लिए (http://www.highcharts.com/ref/#chart-events)। स्पष्ट रूप से load वह होना चाहिए जो "चार्ट तैयार" ईवेंट पर आग लगाना चाहिए, लेकिन ऐसा नहीं है। यह घटना "जब डेटा लोड किया जाता है"

यहां एक नमूना वे load के लिए है फायरिंग रहा है: http://jsfiddle.net/hgbQm/

यहाँ है इसके बाद के संस्करण कोड है जो chart से पता चलता का एक संशोधित संस्करण तैयार जब load निकाल दिया जाता है नहीं है: http://jsfiddle.net/QzKky/1/

कोई विचार?

वैकल्पिक रूप से, मुझे देरी कॉल करने की आवश्यकता होगी लेकिन यह बहुत बदसूरत होगा। धन्यवाद!

उत्तर

18

वास्तव में देरी कॉल एक बहुत अच्छा दृष्टिकोण नहीं है। load घटना ठीक से काम कर रहा है, लेकिन मौजूदा चार्ट this कीवर्ड द्वारा कहा जाता है, यानी

// create the chart 
var chart = new Highcharts.Chart({ 
    chart: { 
     renderTo: 'container', 
     events: { 
      load: function(event) { 
       //When is chart ready? 
       console.log(this); //this refers to the loaded chart. 
      } 
     }   
    }, 
    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]  
    }] 
}); 

Demo

आशा इस :)

+0

अरे, महान, मैं 'के बारे में this' :) धन्यवाद भूल गया! ExtJS EventManager द्वारा लाड़ प्यार बहुत अधिक। Haha। धन्यवाद! –

3

में मदद करता है यह निश्चित रूप से स्वीकार किए जाते हैं जवाब की तुलना में कम सुरुचिपूर्ण है, लेकिन अभी भी कोड की कुछ पंक्तियों के साथ ठीक काम करता है। सार सभी चार्ट कंटेनर एचटीएमएल तत्वों को बस मतदान करना है।

कोड के नीचे मान लिया गया है आप एक या अधिक Highcharts होने वर्ग = "चार्ट" तत्वों से जुड़ी है:

var chartsToLoad = []; 

$('.chart').each(function(n,elem) { 

    chartsToLoad[n] = window.setInterval(function() { 

     if(typeof($(elem).highcharts()) !== 'undefined') { 

      // It's loaded now, go ahead... 
      $(elem).highcharts().doSomeHighchartsStuffHere() 

      // Permanently stop polling 
      window.clearInterval(chartsToLoad[n]); 
     } 

    }, 100); // Check every 100ms 


}); 
+0

इस समाधान के लिए मेरे लिए अच्छा काम किया क्योंकि 'plotOptions.series.animation.complete' कॉलबैक काम नहीं करता था और लोड कॉलबैक बहुत जल्दी – rjbultitude

+0

निकाल दिया गया था, क्योंकि मैं अपडेट भी करना चाहता था (उदाहरण के लिए टिक इंटरवल इत्यादि) श्रृंखला डेटा उपलब्ध था और इस प्रकार, न तो 'लोड' और न ही 'redraw' घटना काम करेगा! एक मुद्दा जो मैं अभी भी सामना कर रहा हूं, यह है कि मेरे अपडेट पूरा होने के बाद अंतिम प्रतिपादन से पहले मुझे मध्यवर्ती अस्थायी दृश्य स्थिति मिलती है। चार्ट स्थिति को विंडो तक लोड करने के लिए एक आसान तरीका होगा जब तक कि window.clearInterval को बुलाया जाता है? वैसे भी अपने समाधान पोस्ट करने के लिए धन्यवाद! –

5

Highcharts.Chart constructor एक कॉलबैक तर्क है कि "कहा जाता है जब चार्ट वस्तु लदान और प्रतिपादन समाप्त हो गया है लेता है "। चार्ट ऑब्जेक्ट को कॉलबैक के लिए एक तर्क के रूप में पारित किया जाता है।

$("#the-chart").highcharts(options, function (chart) { 
    alert("The chart is ready now"); 
    console.log("chart", chart); 
}); 

चार्ट (वस्तु विकल्प, समारोह कॉलबैक) यह एक नया चार्ट वस्तु बनाने के लिए निर्माता है।

पैरामीटर

  • विकल्प: वस्तु
    चार्ट विकल्प, के रूप में शीर्षक "विकल्प वस्तु" बाएं मेनू में के तहत दस्तावेज।

  • कॉलबैक: फ़ंक्शन
    चार्ट ऑब्जेक्ट लोड होने और प्रतिपादन समाप्त होने पर निष्पादित करने के लिए एक फ़ंक्शन। ज्यादातर मामलों में चार्ट एक थ्रेड में बनाया गया है, लेकिन इंटरनेट एक्सप्लोरर संस्करण 8 या लेस चार्ट को कभी-कभी दस्तावेज़ तैयार होने से पहले शुरू किया जाता है, और इनकेसेस में चार्ट ऑब्जेक्ट को कॉल करने के बाद सीधे समाप्त नहीं किया जाएगा। चार्ट()। नतीजतन, कोड जो नव निर्मित चार्ट ऑब्जेक्ट पर निर्भर करता है हमेशा कॉलबैक में चलाना चाहिए। एक chart.event.load हैंडलर को परिभाषित करना बराबर है।

रिटर्न

  • चार्ट
संबंधित मुद्दे