首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >更新Chart.js图表时,会更新数据,但会清空画布

问更新Chart.js图表时,会更新数据,但会清空画布
EN

Stack Overflow用户
提问于 2018-07-24 18:09:59
回答 1查看 542关注 0票数 0

我正在用Chart.js在我的html页面中创建多个图表,在窗口加载后,图表每秒都会动态更新为新的数据值。我使用Chart.js update()函数处理更新。所有创建的图表都存储在全局数组中,然后获取这些图表以进行更新。

当我第一次打开html页面,图表每秒更新一次(显示实时测量数据)时,更新工作正常,但当我移动到webapp中的另一个子页面,然后返回到应该显示图表的页面时,所有画布都是空的(图表中的数据正在更新,但画布仍然是空白的)。

当我移动到子页面时,我只更新了部分html内容,包括那些画布所在的区域,当我返回到frontpage时,我加载了与第一次打开网页时相同的html内容。

因此,目前我所做的是,当我返回到应该呈现图表的页面时,我从全局图表数组(在第一次打开网页时创建)中获取旧图表,用新数据集替换旧数据集,然后调用Chart.js更新()函数。我知道数据集每秒更新一次,就像我第一次打开网页时所做的那样(我用控制台检查这一点),但是画布是空的,所以这些更新的图表不再显示在任何地方。

这是我的画布,当更新正常工作时:

代码语言:javascript
复制
<canvas id="etaisyyskuvaaja" height="200" width="350" class="chartjs-render-monitor" style="display: block; touch-action: none; user-select: none; -webkit-user-drag: none; -webkit-tap-highlight-color: rgba(0, 0, 0, 0);"></canvas>

这是从子页面返回后尝试更新时的外观:

代码语言:javascript
复制
<canvas id="etaisyyskuvaaja"></canvas>

所以这就是我所说的“清空”。

我认为当我更新在特定画布中创建的旧图表时,当数据更新时,它应该自动呈现到相同的画布上(实际上,当我第一次打开网页时,html内容保持不变时,这确实是这样的)。然而,现在看来,当我更改了html内容(移动到子页面),然后再次加载那些画布(返回到frontpage并再次开始循环更新)时,重新渲染似乎不再起作用。

有人能告诉我为什么我的图表应该用新数据更新,但画布却是空的吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-07-24 19:04:22

首先,我想也许我需要再次获取canvas元素,并以某种方式将它们传递给update-function,如果图表实例在移除html内容后不知何故遗漏了原始canvas,然后将其加载回来之类的。

然而,我找不到更新画布的解决方案,所以我设法解决了这个问题:

当返回到首页时,我首先循环遍历图表数组,并删除所有应该在我的首页中的图表(最后一次在加载首页时创建)。然后,我在加载html内容后再次创建这些图表,并将它们保存在我的图表数组中。现在,当我开始对这些新创建的图表进行循环更新时,更新就像魔咒一样再次生效!

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51495964

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档