我正在尝试按列名设置某些dygraphs数据系列的初始可见性。
这是因为数据来自一个CSV文件,其中包含可能会出现的列,但我知道我希望默认禁用几列 - 但我不知道它们可能是哪个列号(只是名字)。
我是javascript的新手,所以答案很简单。 我正在尝试这样做:
<script type="text/javascript">
g = new Dygraph(
document.getElementById("graphdiv"), // containing div
"last/test.csv",
{
connectSeparatedPoints: true,
includeZero: true
}
);
g.setVisibility(g.indexFromSetName("writer_write_start") - 1, 0);
</script>
但这给了我一个错误。如果我从javascript控制台或onclick事件运行setVisibility命令,它可以正常工作。我怀疑当我尝试运行引用CSV文件中的数据的方法时,Dygraph没有被完全加载,我需要在dygraph完全加载后以其他方式运行它。
答案 0 :(得分:3)
当您使用CSV文件的路径作为其数据参数调用new Dygraph
时,该调用是异步的。所以你的怀疑是正确的 - 当你致电g.indexFromSetName("writer_write_start")
时,获得你想要的答案所需的数据还没有。
处理此问题的最佳方法是将setVisibility代码移动到初始drawCallback
,如下所示:
<script type="text/javascript">
g = new Dygraph(
document.getElementById("graphdiv"), // containing div
"last/test.csv",
{
connectSeparatedPoints: true,
includeZero: true,
drawCallback: function(dg, is_initial) {
if (!is_initial) return;
dg.setVisibility(dg.indexFromSetName("writer_write_start") - 1, 0);
}
}
);
</script>