如何从配置对象外部调用Highcharts工具提示格式化程序功能?

时间:2016-08-01 15:15:39

标签: javascript angularjs highcharts highcharts-ng

所以我有一个有趣的问题。

这是格式化程序函数在图表配置对象中的位置:

在HighCharts控制器中

vm.config = {
    options: {
        ....
        chart: {
            ....
        },
        navigator: {
            ....
        },
        tooltip: {
            shared: true,
            useHTML: true,
            backgroundColor: null,
            borderWidth: 0,
            shadow: false,
            formatter: function(tooltipObj) {
                return formatTooltip(tooltipObj, this.points);
            }
        },
        ....

我希望能够从我的应用中的其他位置调用formatTooltip功能。但是,1)我该怎么做? 2)如何传递tooltipObj

例如,在我的alertFactory中,我想要当用户将鼠标悬停在plotBand上时发生鼠标悬停事件,以便将更多信息发送到工具提示中:

在AlertsFactory中

var formatPlotBand = _.curry((color, alert) => {
    return {
        color : color,
        from  : alert.start_epoch * 1000,
        to    : alert.end_epoch * 1000,
        id    :'alert-plotband',
        events: {
            mouseover: function (e) {
                /*
                    Somehow from here call the formatTooltip function
                    in the highCharts Controller.
                */
            },
            mouseout: function (e) {
                ....

1 个答案:

答案 0 :(得分:1)

var formatPlotBand = _.curry((color, alert) => {
return {
    color : color,
    from  : alert.start_epoch * 1000,
    to    : alert.end_epoch * 1000,
    id    :'alert-plotband',
    events: {
        mouseover: function (e) {
            vm.config.options.tooltip.formatter(tooltipObj);
            chart.tooltip.refresh([chart.series[0].points[i]])
        },
        mouseout: function (e) {
            ....

我不知道vm是否正在调用您的图表,因此请使用您正在使用的任何变量名称替换代码中的chart