我想在一个页面中按时间顺序显示多个cytoscape实例:首先在图表上显示一组节点,用户必须在它们之间创建边缘,然后他移动到第二个图形等。
我的重新初始化代码与cy.edgehandles之间似乎存在冲突。首先,一切正常。从第二个例子开始,"鬼"拖动边缘时不显示边缘。
我在控制台中收到以下错误消息:
jquery.cytoscape.js-edgehandles.js:333 Uncaught TypeError:不能 阅读财产' id' null jquery.cytoscape.js-edgehandles.js:333 $ .fn.cytoscapeEdgehandles.functions.init.drawLine jquery.cytoscape.js-edgehandles.js:732 moveHandler jquery-2.0.3.min.js:5 x.event.dispatchjquery-2.0.3.min.js:5 x.event.add.y.handle
看似" null"的变量是:
333:source:sourceNode.id(),
以下是我为重新初始化cy.instance所写的代码:
$('#next').click(function(){
indexLevel++;// index to move from one instance to the next.
cy.load(elesJson);// load nodes collection
cy.ready();
});
这是我的代码:
//元素
$(function(){
var elesJson = {
nodes: [{ data: { id: 'S'} }...],
edges: [{ data: { id: 'loan', source: 'B', target: 'U' } },...]};
//实例索引
var indexLevel=0;
// cy初始化
$("#cy"+indexLevel).cytoscape({
style: cytoscape.stylesheet()...
elements: elesJson,
ready: function(){window.cy = this;cy.zoomingEnabled( false );
cy.panningEnabled( false );});
对此有任何解决方案吗?
答案 0 :(得分:0)
我不是问题究竟是什么,但我认为原因可能在于工作流程。它应该是:
(1)destroy()
cy
上的边缘句柄。
(2)cy.destroy()
核心实例。
(3)创建一个新的核心实例cy
。
(4)在cy
上创建一个新的边缘句柄。
替代流程:
(1)永远不要毁灭。
(2)不要破坏,空图表并重复使用它们:cy.elements().remove()
如果Edgehandles中存在错误,备用流程可能更安全,并且它肯定更有效(即更快)。
如果这不能解决问题,那么也许你可以共享一些代码(如果代码是敏感的,可以私下发送给我),我们可以在这里发布通用结果。