1

我有这样的 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'
            }
        });
    }
});

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

解析 y 属性的意外值 NaN。

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

显示的控制台日志:[825557000000,1089384000000,1404492600000]

问题出在哪里?

4

2 回答 2

4

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

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

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

选择一个适合您的检查将字符串解析为数组@jsFiddle了解更多关于发生的事情

于 2012-10-02T17:53:09.040 回答
1

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

如果valueList是一个数字数组,那么这一行将其转换为字符串:

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

不要那样做。

于 2012-10-02T12:24:56.850 回答