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