最近公司要用Echarts来给用户展示图表消息,功能要求用户在图表的title上可以自定义编辑。
下面介绍该方法:
option中:title : {text: '测试',link: "javascript: changeTitle('测试')",target: 'self'},
使用title中的link属性,会跳转所写的链接(该代码中是一个带参数的function方法),同时要使用target属性(跳转链接的打开方式,blank是新窗口打开,self是自身窗口打开),
最后在对应的页面写changeTitle()方法。
以下是该js方法:
function changeTitle(name){
var value = prompt('输入图表的名称:', name);
if(value == null){
alert('你取消了输入!');
}else if(value == ''){
alert('图表名称输入为空,请重新输入!');
changeTitle();
}else{
var myChart = echarts.init(document.getElementById('show_echarts'));
var jsdata = <%=jsondata%>;
var str = JSON.stringify(jsdata); // 转换后的字符串
var jsonstr = str.replace('"text":"'+name+'"', '"text":\"'+value+'\"');
var option = JSON.parse(jsonstr);
myChart.setOption(option);
}
}
其中<%=jsondata%>是后台传过来的json数据,由于该功能是在原代码基础上修改,而原代码在jsp页面中嵌入了java代码,因此使用该方法。其中有两步分别是将后台的json数据转换成字符串,然后将替换后的字符串再转换成json。转换原因是由于replace方法只能识别字符串,如果调用为其他形式的数据,则会报错,因此需要注意。