Javascript 如何在运行时更新cytoscape.js图形
我正在使用cytoscape.js在HTML页面中呈现图形。该图表示一个RDF图,内容通过ajax请求REST服务获得。此服务允许添加/删除资源和语句,因此我希望在每次更改后更新图表 当我收到数据时,我正确地配置了cytoscape对象,但是当我对rdf图(添加/删除资源)进行一些更改时,我无法更新该图。目前,我尝试以下方法:Javascript 如何在运行时更新cytoscape.js图形,javascript,cytoscape.js,Javascript,Cytoscape.js,我正在使用cytoscape.js在HTML页面中呈现图形。该图表示一个RDF图,内容通过ajax请求REST服务获得。此服务允许添加/删除资源和语句,因此我希望在每次更改后更新图表 当我收到数据时,我正确地配置了cytoscape对象,但是当我对rdf图(添加/删除资源)进行一些更改时,我无法更新该图。目前,我尝试以下方法: 使用所有设置重新定义cytoscape对象,在这种情况下,如果删除一个元素,图形将更新,但如果添加新元素,图形将消失 使用以下函数更新cytoscape对象,在这种情况
- 使用所有设置重新定义cytoscape对象,在这种情况下,如果删除一个元素,图形将更新,但如果添加新元素,图形将消失
- 使用以下函数更新cytoscape对象,在这种情况下,如果我删除一个元素,图形将更新,但节点的位置将更改(所有节点重叠)。当我添加新元素时,图形消失了
function updateGraph(graph){ console.log("update graph"); cy.$('node').remove(); cy.$('edge').remove(); cy.add(graph); }
- 仅添加和删除感兴趣的元素,为此,我创建了一个函数来查找新旧图形之间的差异,然后调用以下函数。在这种情况下,
在cytoscope.js文件中生成一个错误,但是add方法起作用,图表显示了新元素,但我无法再选择或移动元素cy.remove(elem[j])
function addElements(elem){ for (j in elem) { cy.add(elem[j]); } } function removeElements(elem){ for (j in elem) { cy.remove(elem[j]); } }
- 我也遵循这个答案,但没有成功
eles.data()
来(强制)修改开发人员定义的每个元素数据:
如果您想声明性地指定图形的突变,请使用
cy.json()
:谢谢@maxkfranz正在寻找这个!