2014-01-14 30 views
1

我想在浏览器中的电流图存储在服务器端,现在我测试如何。我遇到了一个奇怪的问题:在进行jsoning,decycling,stringifying和重新加载图形之后,元素不知何故丢失。cy.load()的元素都将丢失

var j = network_tab.cy.json(); 
j = JSON.decycle(j); 
j = JSON.stringify(j); 
network_tab.cy.load(j); 

在删除图表之前,我无法对其进行字符串化。如果你看看字符串化的版本,你可以看到,元素仍然存在,但加载后,它们消失了。

也许我一般用cy.load()函数的一个问题,但我希望你们能帮助我。

编辑:这个问题似乎是与字符串化功能。然后我的问题归结为如何使整个对象可读取load()。

An element must be of type `nodes` or `edges`; you specified `undefined` 
console.error(msg); 
cytoscape.js (line 244) 
TypeError: obj._private is undefined 

我想复制整个事情,但尤其是元素,职位。 那么完全重新初始化图表会更好吗?如果是这样,我该如何添加节点的位置?

回答

1

(1)cy.json()是未记录(也可能没有准备好使用),直到2.1

(2)你不应该需要使用JSON.decycle(),除非你自己的数据,你在把元素相互引用 - 一般来说不是一个好主意。不是cy.load() - 在intialisation使用

(3)cy.json()为您提供了整个图形状态。您可以将json.elements传递给cy.load(),但不传递根对象json。 (4)您也可以通过(2.1之前的测试和记录)ele.json()获取每个单独的元素作为JSON,并构建自己的对象以传递给cy.load()

(5)你有没有检查你传递给cy.load()对象?你可以在这里发布吗?你没有传递一个JSON字符串到cy.load(),对不对?

+0

我试图分析整个cy.json()对象,但显然没有奏效。现在我试图解析cy.json()。要加载的元素,一切正常,但是职位。所以我可能必须完全重新初始化图表,并在那里添加位置? – Sileadim

+0

当调用'cy.load()'时,请记住与它一起调用布局 - 与使用元素指定位置的'cy.add()'相反。所以,你需要使用预设的布局或类似的,或者你需要使用'cy.add()'。文档:http://cytoscape.github.io/cytoscape.js/ – maxkfranz