javascript - 异步加载 Chart.js 工具提示信息

标签 javascript chart.js bar-chart

我知道我们可以使用以下代码加载图表工具提示的信息:

window.myLine = new Chart(chart, {
  type: 'line',
  data: lineChartData,
  options: {
    tooltips: {
      enabled: true,
      mode: 'single',
      callbacks: {
        label: function(tooltipItems, data) {
          return tooltipItems.yLabel + ' €';
        }
      }
    },
  }
});

问题是,在我的情况下,我需要调用一个函数并异步返回值;可能会显示一个微调器,直到响应准备好。我怎样才能做到这一点?

最佳答案

您可以调用 chart.js 更新()而是异步方法。如果标签应该取决于用户悬停的数据点,您可能还需要使用递归。

window.myLine = new Chart(chart, {
  type: 'line',
  data: lineChartData,
  options: {
    tooltips: {
      enabled: true,
      mode: 'single',
      callbacks: {
        label: asyncTooltipLabel
      }
    },
  }
});

function asyncTooltipLabel(tooltipItems, data) {
  // some asynchronous function call
  setTimeout(function() {
    // when asyncronous result comes
    const result = (tooltipItems[0].index * 2) + ' €';

    const newTooltipConfig = {
       enabled: true,
       mode: 'single',
       callbacks: {
           label: function(newTooltipItems, newData) {
              if (newTooltipItems[0].index === tooltipItems[0].index && newTooltipItems[0].datasetIndex === tooltipItems[0].datasetIndex) return result;
              else asyncTooltipLabel(newTooltipItems, newData);
           }
       }
    }

    // apply new tooltip config
    window.myLine.options.tooltips = newTooltipConfig;
    window.myLine.update();
  }, 2000);
}

关于javascript - 异步加载 Chart.js 工具提示信息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59312407/

相关文章:

javascript - 选项 : plugins not functioning

python - 如何修改x轴下方凌乱且重叠的日期标签

javascript - 如何通过javascript识别 Canvas 中的区域

Javascript 分页问题

javascript - 从嵌套循环 Javascript 中的一个循环访问参数

javascript - document.getElementById(thebutton).onclick = null 是否从按钮中删除事件?

javascript - ChartJS 每个标签都有独特的数据集

html - 如何删除到达我的网页的 CSS 代码?

google-visualization - Google BarChart设置条形宽度吗?

Python Pandas 堆积条形图 x 轴标签