2012-10-02 30 views
0

我有ExtJS的+ Highcharts代码喜欢这里:HighCharts:意外NaN值解析Ÿ属性

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

但经过我叫这个小部件,我得到一些错误:显示

Unexpected value NaN parsing y attribute.

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

的console.log :[825557000000,1089384000000,1404492600000]

问题在哪里?

回答

4

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

你需要将其转换成一个数组传递到highchart之前,你可以做到这一点以各种方式像

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

选择适合自己 退房parsing string to array @ jsFiddle要了解更多关于什么发生了一些一个

+0

谢谢@Jugal。有些时候,我明白我需要转换这个字符串。我尝试一些像这样:'valuesList = valuesList.map(function(x){return parseFloat(x)});'那很好!再次感谢。 **问题解决了**。 – ForceMan

1

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

如果valueList是一个数字的未来在一个数组,那么这条线将其转换为字符串:

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

不要那样做。

+0

感谢Johny,现在我会尝试纠正。 – ForceMan

+0

是否可以举个例子? – ForceMan

+0

valuesList它的字符串数组(数值)。 – ForceMan