2014-01-14 32 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