我使用cytoscape.js 2.2.4和乔木布局渲染一个小图。
当我第二次选择一个或多个节点进行布局时,所选择的节点是固定的,不会移动。
您可以在the Arbor section of the cytoscape.js docs中看到我的意思:
我使用cy.nodes(":locked")
检查了锁定的节点,但选择未锁定。 Arbor.js has a 'fixed' property for nodes,但我看不到cytoscape.js设置此属性的位置。
在应用乔木布局时,是否可以移动选择的节点?我可以将fixed: false
节点属性传递给arbor.js吗?
我使用它在单击节点时向图形添加内容。我添加了一些节点/边缘并再次启动布局。如果单击的节点已修复,则布局混乱。
更新1
我发现它不受节点locked
状态的影响,而是grabbable
。当我在布局之前运行cy.nodes().ungrabify()
时,单击的节点不是固定的。
当我在布局的停止回调中执行cy.nodes().grabify()
或在布局后使用长setTimeout()
时,节点再次变为可抓取。
但是当我再单击另一个节点并再次启动布局时,即使console.log(cy.nodes(":grabbed"))
被调用,节点也会被抓住(如cy.nodes().ungrabify()
中所示)。
这看起来像某个地方覆盖了可抓取/不可抓取的属性。在乔木布局功能中Cytoscape.js itself uses ungrabify()
和grabify()
,但这没有效果。
我如何ungrabify()
和grabify()
节点?