1

我正在尝试按列名设置一些 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 完全加载后以其他方式运行它。

4

1 回答 1

3

当您new Dygraph使用 CSV 文件的路径作为其数据参数进行调用时,调用是异步的。所以你的怀疑是正确的——当你打电话时g.indexFromSetName("writer_write_start"),得到你想要的答案所需的数据还不可用。

处理这个问题的最好方法是将你的 setVisibility 代码移动到一个 initialdrawCallback中,像这样:

<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>
于 2012-03-04T18:06:32.937 回答