如果单个页面中有多个图表,并且您有一些类似这样的功能来更改图表类型
function setGraph_chartName1_to_customType(e){ //there are multiple functions like this
chartName1.setOption({
series: [{
customtypename: 'customType',
renderItem: renderItemCallback,
}]
});
// ... somethings
}
然后在
renderItemCallback()
中,您必须识别所需的图表,因为函数 renderItemCallback()
它用于多个图表(例如,chartName1、chartName2、chartName3)
function renderItemCallback(params, api) {
var points_array = chartName1.getOption().dataset[0].source; //HERE IS NEEDED THE CHART OBJECT
if (points_array.length) {
// ... somethings
}
}
现在,在代码后面,查看问题:
如何在
chartName1
函数中获取 renderItemCallback
作为引用图?
除了
params, api
(以识别您正在处理的图表)之外,还有其他方法可以将其他参数发送到回调函数吗?
在这种情况下,您可以使用返回函数的函数:
function renderItemCallback(chartName){
return function(params, api) {
var points_array = chartName.getOption().dataset[0].source;
if (points_array.length) {
// ... somethings
}
};
}
当您调用外部函数时,它会返回一个闭包,这是一个与原始代码中的函数类似的函数,只不过它的
chartName
变量绑定到您在调用中提供的值。
所以你可以这样使用它:
function setGraph_chartName1_to_customType(e){ //there are multiple functions like this
chartName1.setOption({
series: [{
customtypename: 'customType',
renderItem: renderItemCallback(chartName1),
}]
});
}