2013-02-15 40 views
7

कृपया वाई-अक्ष लेबल सेट करने के तरीके पर चर्चा Highcharts text labels for y-axis देखें।हाइचार्ट्स टाइपस्क्रिप्ट, वाई-अक्ष लेबल

मैंने अपनी टाइपस्क्रिप्ट परिभाषा में https://github.com/borisyankov/DefinitelyTyped/blob/master/highcharts/highcharts.d.ts का उपयोग किया, लेकिन मुझे वाई-अक्ष फॉर्मेटर को परिभाषित करने का कोई तरीका नहीं मिला।

किसी ने कभी पहले कोशिश की है?

- अद्यतन -

मेरे origianl जावा स्क्रिप्ट कोड

var yearChartOptions = { 
    yAxis: { 
     plotLines: [{ 
      label: { 
       formatter: function() { 
        return '$' + Highcharts.numberFormat(this.value/1000, 0) +'k '; 
       } 
      }, 
     }] 
    }, 
}; 

// Create the chart 
var yearChart = new Highcharts.Chart(yearChartOptions); 

कोड में है मैं एक this.value जो हर बार है मूल्य (मैं बार चार्ट प्रयुक्त)। टाइपस्क्रिप्ट में (मैंने अभी तक सरणी को हटाने के लिए नहीं बदला है)।

var yearChartOptions: HighchartsOptions = {}; 
    yearChartOptions.chart = {}; 
    yearChartOptions.yAxis = []; 
    yearChartOptions.yAxis[0] = {}; 
    yearChartOptions.yAxis[0].plotLines = {}; 
    yearChartOptions.yAxis[0].plotLines.label = {}; 
    yearChartOptions.yAxis[0].plotLines.label.style.formatter(() => "$" + Highcharts.numberFormat(this.value/1000, 0) + "k "); 

    // Create the chart 
    var yearChart = new Highcharts.Chart(yearChartOptions); 

उत्पादन

/* 
Compile Error. 
See error list for details 
D:/MyProject/Scripts/test.ts(36,56): The property 'formatter' does not exist on value of type 'HighchartsCSSObject' 
D:/MyProject/Scripts/test.ts(36,107): The property 'value' does not exist on value of type 'Dashboard' 
*/ 

है और यह संकलन नहीं होंगे।

+0

संभव डुप्लिकेट http://stackoverflow.com/questions/4987457/highcharts-text-labels-for-y-: अपने कोड के आधार पर

पूरी तरह से काम कर रहे उदाहरण धुरी) –

+1

मुझे नहीं लगता कि यह एक डुप्लिकेट है। पोस्टर उस उत्तर में कोड का उपयोग करने की कोशिश कर रहा है, लेकिन टाइपस्क्रिप्ट कंपाइलर इसे अस्वीकार कर रहा है। – Fenton

+0

@hardywang ने अद्यतन समस्या को अपनी समस्या का समाधान किया है? – Fenton

उत्तर

2

अद्यतन - Definitely Typed Highcharts definition में अब मेरा फ़िक्स है, इसलिए आप नवीनतम संस्करण डाउनलोड कर सकते हैं और उम्मीद है कि यह आपकी समस्या का समाधान करेगा।

हाइचार्ट्स के लिए टाइप परिभाषा बताती है कि आपको yAxis में विकल्पों की amd सरणी पास करने की आवश्यकता है। यह टाइपस्क्रिप्ट में संकलित करता है।

var chart = new Highcharts.Chart({ 
    yAxis: [{ 
     labels: { 
      formatter: function(): string { 
       return 'My Label'; 
      } 
     } 
    }] 
}); 

हालांकि, मैं इस मेल खाता the documentation, which suggests you pass the yAxis options as an object, नहीं इन वस्तुओं में से कई की एक सरणी के रूप में यकीन नहीं है। यह इस दृष्टिकोण से भी समझ में आता है कि आपके पास एक एकल yAxis है।

प्राप्त करने के लिए मैं क्या विश्वास है मान्य संस्करण (यानी सरणियों नहीं) है:

/// <reference path="highchart.d.ts" /> 

var yearChartOptions: HighchartsOptions = { 
    yAxis: { 
     plotLines: { 
      label: { 
       formatter: function(): string { 
        return '$' + Highcharts.numberFormat(this.value/1000, 0) + 'k '; 
       } 
      }, 
     } 
    } 
}; 


// Create the chart 
var yearChart = new Highcharts.Chart(yearChartOptions); 

आप अपने highchart.d.ts फ़ाइल को यहां समायोजित कर सकते हैं ...

interface HighchartsOptions { 
    chart?: HighchartsChartOptions; 
    // others... 
    yAxis?: HighchartsAxisOptions; // <-- remove the [] from this line 
} 

मैं प्रस्तुत की है इसे ठीक करने के लिए निश्चित रूप से टाइप करने के लिए एक पुल अनुरोध।

[y- अक्ष के लिए Highcharts पाठ लेबल] (की
+0

अभी भी संकलन त्रुटि थी, क्योंकि 'yearChartOptions.yAxis.plotLines.label.style.formatter (() =>" $ "+ Highcharts.numberFormat (this.value/1000, 0) +" k "); 'फ़ॉर्मेटर नहीं है मिला और 'यह' कीवर्ड पहचाना नहीं गया। नमूना http://stackoverflow.com/questions/4987457/highcharts-text-labels-for-y-axis और दस्तावेज़ http://api.highcharts.com/highcharts#yAxis.labels.formatter – hardywang

+0

मैंने उदाहरण को अपडेट किया है 'जो मैं मानता हूं वह हासिल करने के लिए वैध संस्करण' टिप्पणी है। – Fenton

+0

धन्यवाद, मैंने ऑब्जेक्ट के भीतर ऑब्जेक्ट को तुरंत चालू करने के लिए आपके वाक्यविन्यास का प्रयास किया और यह काम करता है। मुझे यकीन नहीं है कि मेरे तरीकों से क्या गलत है, ऑब्जेक्ट को तत्काल करें, फिर ऑब्जेक्ट के गुण सेट करें लेकिन यह काम नहीं करता है। – hardywang