HighCharts:NaN解析y属性的意外值

时间:2012-10-02 11:44:56

标签: parsing extjs highcharts extjs-mvc

我有ExtJs + Highcharts代码,如:

Ext.define('Cabinet.view.workspace.indexCharts.Line', {
    extend: 'Ext.panel.Panel',
    alias: 'widget.IndexLineChart',
    show: function (chartDiv, valuesList) {
        valuesList = '[' + valuesList + ']';
        console.log(valuesList);
        charts[chartDiv] = new Highcharts.Chart({
            chart: {
                renderTo: chartDiv,
                type: 'line'
            },
            title: {
                text: 'Some Title'
            },
            yAxis: {
                categories: [2005, 2006, 2007]
            },

            series: [{ data: valuesList}],

            legend: {
                layout: 'horizontal',
                align: 'center'
            }
        });
    }
});

但是在我调用这个小部件之后,我收到了一些错误:

  

意外值NaN解析y属性。

     

return e}function oa(a){return Fa(a)?a:[a]}function p(){var a=arguments,b,c,d=a

console.log显示:[825557000000,1089384000000,1404492600000]

问题出在哪里?

2 个答案:

答案 0 :(得分:4)

看起来像valuesList是一个字符串,它需要的是一个数组。

在将其传递给高图之前,您需要将其转换为数组,您可以通过各种方式执行此操作,例如

valuesList = '[' + valuesList + ']';
valuesList = JSON.parse(valuesList);
//OR
valuesList = jQuery.parse(valuesList);
//OR
valuesList = eval(valuesList);

选择适合你的那个 查看parsing string to array @ jsFiddle了解更多关于发生的事情

答案 1 :(得分:1)

这是因为series.data对象需要一个数据点数组的值,但是你要为它提供一个包含数组JSON表示的字符串。 valueList需要是一个数字数组而不是字符串。

如果valueList是一个数字数组,则该行将其转换为字符串:

valuesList = '[' + valuesList + ']';

不要那样做。