现在的位置: 首页 > 综合 > 正文

在动态配置属性时使用eval()激活你的参数值

2013年12月12日 ⁄ 综合 ⁄ 共 1292字 ⁄ 字号 评论关闭

项目中需要嵌入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]]

抱歉!评论已关闭.