小编Nik*_* E.的帖子

更新所有 Chart.js 实例以应用更改后的默认值?

情况:

我目前正在集成动态深色主题功能,并且需要在更改主题时更改Chart.js的默认值。它看起来像这样(高度简化):

function changeTheme(darkTheme = false) {
  if (darkTheme) {
    document.body.classList.add('dark-theme');
    Chart.defaults.global.defaultFontColor = 'white';
  } else {
    document.body.classList.remove('dark-theme');
    Chart.defaults.global.defaultFontColor = 'black';
  }
}

Run Code Online (Sandbox Code Playgroud)

问题:

页面上的现有图表不会立即应用更改后的默认设置。仅在更新时进行(例如在工具提示上、数据更改、画布大小调整)。

我可以通过调用 Chart 的实例方法来手动更新图表.update()。但我无权访问所有现有的图表对象(无权访问创建它们的脚本的范围),并且我没有找到全局获取它们的方法。


问题:

  1. 有没有办法在没有图表实例的情况下强制更新所有图表?
  2. 或者:有没有办法让所有图表实例然后全部更新?
  3. 或者:这是一个XY 问题吗?有一种我没有想到的解决方法吗?

如果能回答上述问题之一,我就已经很满意了。


重现问题的示例:

显示并运行代码片段。点击“toggleDarkTheme”按钮,然后点击“投票数”或其他内容来触发更新。

// set function for theme
function changeTheme(darkTheme = false) {
  if (darkTheme) {
    document.body.classList.add('dark-theme');
    Chart.defaults.global.defaultFontColor = 'white';
  } else {
    document.body.classList.remove('dark-theme');
    Chart.defaults.global.defaultFontColor = 'black';
  }
}
changeTheme(false);

// button to toggle theme
let darkThemeActive = false;
document.getElementById('toggleDarkTheme').addEventListener('click', ()=>{ …
Run Code Online (Sandbox Code Playgroud)

javascript default html5-canvas chart.js

2
推荐指数
1
解决办法
3073
查看次数

我如何解决它: this.options = options ?? {};在 mongoDB 中

为什么会出现此错误,如何解决?

当我输入代码连接到数据库时,出现此错误。但是当我在另一个项目中输入相同的代码时,它就起作用了。我该如何解决这个问题。

node.js

1
推荐指数
1
解决办法
3423
查看次数

标签 统计

chart.js ×1

default ×1

html5-canvas ×1

javascript ×1

node.js ×1