我使用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但沒有成功。
我的問題是我如何在運行時更新圖形的元素而不改變樣式,位置和其他設置?