6

我的应用程序具有刷新功能,其中图表上的所有现有数据都应该被清除,并且应该从开始加载数据。我不想破坏 dygraph 并重新创建它,而只需要清除现有数据并从头开始绘制。我尝试的是

g.rawdata_ = null; g.updateOptions({'file': g.rawdata_});

但它会抛出错误。如果我将 rawdata 设置为 0 然后尝试更新,它不会清除数据。关于如何做到这一点的任何建议?

4

2 回答 2

4

就像评论里的小伙伴们说的:

plotData = [[0,0]];

g.updateOptions(
    { 
        'file': plotData
    }
);

plotData 必须有一些东西。您可能可以使用几种不同格式中的一种,但上述方法过去对我有用。我也在实时更新绘图并每秒刷新数据。为此,我在 updateOptions 之前预加载了 plotData。

祝你好运,

j

于 2016-01-19T00:06:41.093 回答
3

我面临着几乎同样的问题。当用户单击按钮时,我的图表会刷新。dygraphs 的句柄是一个局部变量,例如,

var g = new Dygraph(...

这在函数内部调用。问题是图表和它引用的所有变量(元素、数据等)永远不会被破坏并留在内存中。

我的解决方法是拥有一个全局对象,以chart_id 作为键,以图表的句柄作为值,每次调用相同的chart_id 时,我都会检查句柄是否已经存在于全局对象中,如果存在则销毁。原来是这样的

if(chart_handle[chart_id])
{
   chart_handle[chart_id].destroy();
}
chart_handle[chart_id] = new Dygraph(...
于 2018-08-20T16:17:42.520 回答