Cytoscape Edgehandles:多个cy实例搞乱了Ghost Edgehandles

时间:2015-02-02 07:40:11

标签: javascript jquery cytoscape.js

我想在一个页面中按时间顺序显示多个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 );});

对此有任何解决方案吗?

1 个答案:

答案 0 :(得分:0)

我不是问题究竟是什么,但我认为原因可能在于工作流程。它应该是:

(1)destroy() cy上的边缘句柄。

(2)cy.destroy()核心实例。

(3)创建一个新的核心实例cy

(4)在cy上创建一个新的边缘句柄。

替代流程:

(1)永远不要毁灭。

(2)不要破坏,空图表并重复使用它们:cy.elements().remove()

如果Edgehandles中存在错误,备用流程可能更安全,并且它肯定更有效(即更快)。

如果这不能解决问题,那么也许你可以共享一些代码(如果代码是敏感的,可以私下发送给我),我们可以在这里发布通用结果。