如何使用`renderItem`回调知道一页中的多个eCharts图表所指的图表

问题描述 投票:0回答:1

如果单个页面中有多个图表,并且您有一些类似这样的功能来更改图表类型

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
(以识别您正在处理的图表)之外,还有其他方法可以将其他参数发送到回调函数吗?

javascript callback echarts
1个回答
0
投票

在这种情况下,您可以使用返回函数的函数:

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),
        }]
    });
}
© www.soinside.com 2019 - 2024. All rights reserved.