将d3树状态保存到localStorage

时间:2013-10-05 17:53:06

标签: javascript json d3.js local-storage

我使用d3.js创建了一个可折叠的树布局,用户可以在其中单击以展开和折叠分支。如果用户在展开某些分支后离开页面并稍后返回该页面,则该图表应处于与其离开时相同的状态。

现在,我有一个点击功能,可以将点击的节点标记为openclosed(或者如果尚未点击则未定义):

function click(d) {
  if (d.children) {
    d._children = d.children;
    d.children = null;
  } else {
    d.children = d._children;
    d._children = null;
  }
  // toggle node state
  if (d.state === undefined || d.state == "closed") {
    d.state = "open";
  } else {
    d.state = "closed";
  }
  update(d);
}

这很好用,而且很简单。

我的想法是使用这些新信息更新我正在使用的JSON数据集,并将其写入localStorage,每次用户访问该页面时首先检查它,然后虚拟点击标记为“open”的所有节点(不知道如何做到这一点否则)。

但问题是,如何我用这个新的节点信息重写JSON数据集,还是有比上面概述的更好的方法?

请注意,实际来自localStorage的放入和取出不是问题;我知道该怎么做。它具体是如何将树的当前状态恢复为新的/修订的数据集,以后当用户返回页面时脚本可以再次读取。

0 个答案:

没有答案