如何保存调整后的d3.js可视化?

时间:2016-02-02 16:08:45

标签: javascript d3.js

我是一个菜鸟,并且一直在复制和改变d3.js脚本以供学习。我复制了 robschmuecker's(块#7880033 2013年12月9日) D3.js具有自动调整大小的拖放,可缩放,平移,可折叠树http://bl.ocks.org/robschmuecker/7880033

并想知道: a)我重新安排后如何保存树? b)如果在重新安排之后它可以保存为不同的文件(原件将是版本1,重新安排将是版本2) c)如何使用重新安排的父级子项保存新的.json文件? (想想他们可能都是同一个问题。)

任何帮助或建议都会让我朝着正确的方向前进。感谢...

1 个答案:

答案 0 :(得分:0)

在代码中你有root变量。它表示实际的树结构,其他字段包括:“x”,“x0”,“y”,“y0”,“id”...... 要删除这些附加字段,您可以使用此功能:

var delAdditionalFilds = function(obj) {

  for (var prop in obj) {
    if (obj.hasOwnProperty(prop)) {
      if (prop === 'name' || prop === 'children' || prop === 'size') {} else {
        delete obj[prop];
      }
    }
  }
  if (obj.children) {
    obj.children.forEach(function(v, i) {
      delAdditionalFilds(v);
    });
  }

};

为避免覆盖原始对象,您应该对根变量进行深层复制。我使用lodash库来做到这一点。

所以,保存功能会 1)准备根对象的深层副本,然后2)删除其他字段

var save = function(root) {
  var newJSON = _.copy(root);
  delAdditionalFilds(newJSON);
  // now you can send newJSON to your server
};

执行此操作后,您将准备好使用ajax调用

将JSON对象发送到服务器