Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/85.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 重新渲染错误_Javascript_Jquery_Chart.js_Chart.js2 - Fatal编程技术网

Javascript 重新渲染错误

Javascript 重新渲染错误,javascript,jquery,chart.js,chart.js2,Javascript,Jquery,Chart.js,Chart.js2,因此,我正在构建一个交易工具,并使用chartJS绘制图表。这是我的图表现在在页面上的外观: 所以我的问题是,当我改变图表的时间段时,图表会随机显示新旧数据的混合 您可以在此处看到行为: 现在我不能在同一页上同时使用大图表和小图表,因为有计时周期的大图表也有多个AJAX调用,所以每次我点击1W,例如,一个新的调用正在进行,并且图表被绘制出来 我尝试过的事情: 我知道对于chartJS中的动态图表,我必须销毁图表,所以我使用 if (window.chart !== undefined) win

因此,我正在构建一个交易工具,并使用chartJS绘制图表。这是我的图表现在在页面上的外观:

所以我的问题是,当我改变图表的时间段时,图表会随机显示新旧数据的混合

您可以在此处看到行为:

现在我不能在同一页上同时使用大图表和小图表,因为有计时周期的大图表也有多个AJAX调用,所以每次我点击1W,例如,一个新的调用正在进行,并且图表被绘制出来

我尝试过的事情:

我知道对于chartJS中的动态图表,我必须销毁图表,所以我使用

if (window.chart !== undefined)  window.chart.destroy();
对于小图表,我使用一个空数组,并将元素推入其中。我是这样做的:

if ($(quoteDisplayEl).hasClass('quoteDisplay-light')) {
    chartHandel.push(quoteChart);
} else {
    window.chart = quoteChart;
}
因此,对于大图表,我将其分配给一个全局变量,而对于小图表,我将其推送到空数组中——这允许我在一个页面上有多个图表

但是为了让大图表被销毁,我应该从头开始销毁并重新渲染所有图表,我想,我尝试了多次是为了用现在的运气实现这一点

不幸的是,代码超过500行,并且有大量来自API和DB的可变数据,因此我无法制作小提琴演示。

我更喜欢chart.update而不是chart.destroy

我为每个图表制作一个对象,标签为空数组,数据为空数组,颜色和所有你需要的东西。 我用从AJAX获得的数据填充这些数组。 可选:如果我获取所有数据并需要对其进行过滤以显示较少的数据,我将复制对象以保留我获取的所有数据,并将图表所需的所有数据保存在另一个对象中 制作一个updateChart函数,用于更改备份对象中显示的数据或保存的数据,或使用新AJAX请求中的新数据。 以chart.update或任何调用图表的方式结束updateChart。
多个图表应该不是问题,你也不必破坏你的图表。

嘿,谢谢你的评论,我想没有人会看到我尝试了更新,但没有运气。这就是我更新图表的方式:在这里,我将图表作为全局变量添加或添加到数组中:但我假设在您的解决方案中,我只能对所有图表使用chartHandel.push,但是,它不起作用,图表仍然会重新呈现..我稍后会查看它。但是代码将非常有用。如果你能把它贴到某个地方就好了,不需要工作,我可以过滤掉我需要的东西。这是可能的吗?当然,我删除了大部分与问题无关的代码,只留下了Ajax调用和图表数据和图形。您可以在这里找到:谢谢: