【问题标题】:cytoscape.js: selected nodes are fixed in arbor layoutcytoscape.js:选定节点固定在乔木布局中
【发布时间】:2014-04-29 18:14:15
【问题描述】:

我使用 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 在哪里设置这个属性。

在应用 arbor 布局时是否可以让选中的节点移动?我可以将fixed: false 节点属性传递给 arbor.js 吗?

单击节点时,我使用它向图形添加一些内容。我添加了更多节点/边缘并再次开始布局。如果点击的节点是固定的,那么布局就乱了。


更新 1

我发现它不受节点的locked 状态的影响,而是受grabbable 的影响。当我在布局之前运行cy.nodes().ungrabify() 时,单击的节点不固定。

当我在布局的停止回调中执行cy.nodes().grabify() 或在布局后使用很长的setTimeout() 时,节点再次变得可抓取。

但是当我点击另一个节点并再次开始布局时,即使调用了cy.nodes().ungrabify(),该节点仍会被抓取(如console.log(cy.nodes(":grabbed")))。

这看起来像是在某处覆盖了可抓取/不可抓取的属性。 Cytoscape.js itself uses ungrabify()grabify() 在乔木布局函数中,但这没有效果。

我如何ungrabify()grabify() 节点?

【问题讨论】:

    标签: cytoscape.js arbor.js


    【解决方案1】:

    您遇到了渲染器错误:https://github.com/cytoscape/cytoscape.js/issues/528

    应该只是进入 2.2.5。

    【讨论】:

    • 完美!到目前为止,解决方法是使节点仅在“选择”之后才可抓取。这似乎奏效了。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-09-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-30
    • 2017-02-13
    相关资源
    最近更新 更多