如何在图例悬停上触发工具提示?

时间:2020-01-30 10:28:48

标签: javascript jquery chart.js

我在项目中使用ChartJs库,并且试图在切片悬停或图例悬停上显示饼图的工具提示,默认情况下,该库仅在切片悬停上显示工具提示,

我正在尝试执行以下onHover函数

  onHover: function (event, legendItem) {
              var index = legendItem.datasetIndex;
              var label = this.chart.data.datasets[index].label

              return label;
        }

但是下面的功能仍然没有效果。

图表配置的整个代码如下:

optionsPagamenti = {
    maintainAspectRatio: false,
    legend: {
        display: true,
        position: "right",
        labels: {
            usePointStyle: true,
            boxWidth: 6
        },
          onHover: function (event, legendItem) {
              var index = legendItem.datasetIndex;
              var label = this.chart.data.datasets[index].label

              return label;
        }
    },
    tooltips: {
        backgroundColor: '#f5f5f5',
        titleFontColor: '#333',
        bodyFontColor: '#666',
        bodySpacing: 4,
        xPadding: 12,
        intersect: 1,
        displayColors: false,
        callbacks: {
            title: function (tooltipItem, data) {
                return data['labels'][tooltipItem[0]['index']];
            },
            label: function (tooltipItem, data) {
                return "€" + data['datasets'][0]['data'][tooltipItem['index']].toFixed(2).replace(/\d(?=(\d{3})+\.)/g, '$&,').replace(/[,.]/g, m => (m === ',' ? '.' : ','));
            }
        }
    },
    responsive: true,
};

那么我如何在图例悬停上显示工具提示?

1 个答案:

答案 0 :(得分:0)

使用以下方法解决:

onHover: function (event, legendItem) {
        var chart = this.chart;
        var index = legendItem.index;
        var segment = chart.getDatasetMeta(0).data[index];
        chart.tooltip._active = [segment]
        chart.tooltip.update()
        chart.draw()
    }

我还添加了一个onLeave方法来关闭工具提示

  onLeave: function (event, legendItem) {
            var chart = this.chart;
            var index = legendItem.index;
            chart.tooltip._active = []
            chart.tooltip.update()
            chart.draw()
        }