Javascript cy.load()元素丢失
我正在尝试将当前图形存储在服务器端的浏览器中,现在我正在测试如何存储。我遇到了一个奇怪的问题:在jsoning、取消循环、字符串化和重新加载图形之后,元素不知何故丢失了Javascript cy.load()元素丢失,javascript,cytoscape.js,Javascript,Cytoscape.js,我正在尝试将当前图形存储在服务器端的浏览器中,现在我正在测试如何存储。我遇到了一个奇怪的问题:在jsoning、取消循环、字符串化和重新加载图形之后,元素不知何故丢失了 var j = network_tab.cy.json(); j = JSON.decycle(j); j = JSON.stringify(j); network_tab.cy.load(j); 在取消循环图表之前,我无法将其字符串化。如果您查看字符串化版本,您可以看到,元素仍然存在,但是在加载之后,它们就消失了 也许我在使
var j = network_tab.cy.json();
j = JSON.decycle(j);
j = JSON.stringify(j);
network_tab.cy.load(j);
在取消循环图表之前,我无法将其字符串化。如果您查看字符串化版本,您可以看到,元素仍然存在,但是在加载之后,它们就消失了
也许我在使用cy.load()函数时遇到了一些问题,但我希望你们能帮助我
编辑:问题似乎出在stringify函数上。然后我的问题归结为如何使整个对象对load()可读
我想复制整个东西,尤其是元素和位置。
因此,完全重新初始化图形是否更好?如果是,如何添加节点的位置?(1)cy.json()在2.1之前没有文档记录(可能还没有准备好使用)
(2) 您不需要使用JSON.decycle()
,除非您自己放在元素中的数据相互引用——一般来说这不是一个好主意
(3) cy.json()提供初始化中使用的整个图形状态,而不是用于cy.load()
。您可以将json.elements
传递给cy.load()
,但不能传递根对象json
(4) 您也可以通过(2.1之前测试和记录的)ele.JSON()将每个单独的元素作为JSON获取,并构建自己的对象以传递给cy.load()
(5) 您是否检查了要传递给
cy.load()
的对象?你能把它贴在这里吗?您没有将JSON字符串传递给cy.load()
,是吗?我试图解析整个cy.JSON()对象,但显然不起作用。现在我尝试解析cy.json().元素以加载,所有操作都正常,但位置除外。因此,我可能必须完全重新初始化图形,然后才能添加位置?在调用cy.load()
时,请记住,布局是随它一起调用的,而不是使用元素指定位置的cy.add()
。因此,您需要使用预设布局或类似布局,或者需要使用cy.add()
。文件:
An element must be of type `nodes` or `edges`; you specified `undefined`
console.error( msg );
cytoscape.js (line 244)
TypeError: obj._private is undefined