echairts的配置项里面的formatter属性可以是一个函数,但是我们把配置项保存成json的时候因为json不能保存函数类型的数据,所以会被过滤掉,我针对formatter是一个函数类型时做了扩展,可以用JSON.stringify保存成字符串时保存函数,用JSON.parse把字符窜转成对象时再把字符窜转成函数。
下面是代码:
(function(){
var parse = JSON.parse.bind(JSON);
var stringify = JSON.stringify.bind(JSON);
JSON.parse=function (str){
return parse(str, function (key, val){
if (key == 'formatter' && typeof(val)=='string' && val.indexOf('function')==0) {
var fn = new Function('', 'var f=' + val + ';return f');
return fn()
}
return val
})
}
JSON.stringify=function (obj){
return stringify(obj, function (key, val) {
if (key == 'formatter' && typeof (val) == 'function') {
return val.toString()
}
return val
})
}
})()