2017-09-27 86 views
0

我使用cytoscape.js呈现在HTML页面图如何更新cytoscape.js图。该图表示一个RDF图并且该内容通过ajax请求获取到REST服务。此服务允许添加/删除资源和语句,所以我想在每次更改后更新图表。在运行时

我正确地配置Cytoscape的对象时,我接收到的数据,但是当我做一些改变RDF图(添加/删除资源),我无法更新图表。现在,我尝试这个办法:

  • 重新定义的Cytoscape对象的所有设置,在这种情况下,如果我删除一个元素的图形被更新,但如果我添加新元素的图形消失。用下面的函数,在这种情况下如果删除一个元素的图表被更新,但节点的位置被改变(所有的节点重叠)
  • 更新Cytoscape的对象。当我添加新元素时,图形消失。

    function updateGraph(graph){ 
        console.log("update graph"); 
        cy.$('node').remove(); 
        cy.$('edge').remove(); 
        cy.add(graph); 
    } 
    
  • 添加和删除唯一感兴趣的元素,要做到这一点我创建了一个功能查找旧的和新的图形,然后我调用以下函数之间的不同。在这种情况下,cy.remove(elem[j])在cytoscope.js文件中生成一个错误,但add方法起作用,该图显示新元素,但我无法选择或移动元素。

    function addElements(elem){ 
        for (j in elem) { 
        cy.add(elem[j]); 
        } 
    } 
    
    function removeElements(elem){ 
        for (j in elem) { 
        cy.remove(elem[j]); 
        } 
    } 
    
  • 我也遵循这个答案Replace all elements and redraw graph softly in cytoscape.js但没有成功。

我的问题是我如何在运行时更新图形的元素而不改变样式,位置和其他设置?

回答