项目中需要嵌入HighCharts插件
部分代码如下
chart = new Highcharts.Chart({ chart : { renderTo : 'container', type : 'pie', plotBackgroundColor: null, plotBorderWidth: null, plotShadow: false }, //省略部分代码 series: [{ type: 'pie', name: msg.yAxisTitle, data: ['移动',38], ['联通',44], ['电信',66], ['邮政',99] }] });
其中series中data部分是变动的
即获取一个String[],其中存放每月的data数据
data:"[['移动',0],['语音',0],['智能机',0],['自注册智能机',0]];[['移动',0],['语音',0],['智能机',0],['自注册智能机',0]];[['移动',0],['语音',0],['智能机',0],['自注册智能机',0]];[['移动',0],['语音',0],['智能机',0],['自注册智能机',0]];[['移动',0],['语音',0],['智能机',0],['自注册智能机',0]];[['移动',143],['语音',142],['智能机',0],['自注册智能机',0]];[['移动',0],['语音',0],['智能机',0],['自注册智能机',0]];[['移动',0],['语音',0],['智能机',0],['自注册智能机',0]];[['移动',0],['语音',0],['智能机',0],['自注册智能机',0]];[['移动',4],['语音',4],['智能机',1],['自注册智能机',1]]"
最初我试图将data用split()解析后直接嵌入
series: [{ type: 'pie', name: msg.yAxisTitle, data: datas[0] }]
可实际中解析后是这种形式
series: [{ type: 'pie', name: msg.yAxisTitle, data: "[['移动',0],['语音',0],['智能机',0],['自注册智能机',0]]" }]
多了引号后整个图表都无法显示
所以应当使用eval()来真正体现字符串所赋予的实际意义
chart = new Highcharts.Chart({ chart : { renderTo : 'container', type : 'pie', plotBackgroundColor: null, plotBorderWidth: null, plotShadow: false }, //省略部分代码 series: [{ type: 'pie', name: msg.yAxisTitle, data: eval(datas[0]) });
值得一提的是,最初我们需要的是[A],[B],[C],[D]形式的数据
但eval()在解析的时候会仅仅保留最后一个结果,即[D]
故而我们应当让它意识到我们所提供的为一个整体数据
所以在组合data的时候,我们使用了这样一种形式[[A],[B],[C],[D]]