【问题标题】:vis.js: How to expand/collapse nodes with mouse clickvis.js:如何通过鼠标单击展开/折叠节点
【发布时间】:2015-04-20 04:04:01
【问题描述】:

现在只是玩了一天vis.js,并浏览了所有文档和示例。我正在尝试找出使用点击事件刷新节点和边缘数据的最佳方法。例如。假设我有一个没有边的节点,然后单击它以添加 3 个子节点。 vis.js 专家能否建议最好的方法?

预计之前:

nodes = [{id: 1,   label:"Parent Node"} ];
edges = [ ];

预计点击 id 1 后:

nodes = [{id: 1,   label:"Parent Node"},
{id: 2,   label:"Child Node1"},
{id: 3,   label:"Child Node2"},
{id: 4,   label:"Child Node3"} ];
edges = [ {from: 1, to: 2},
          {from: 1, to: 3},
          {from: 1, to: 4} ];

然后我想折叠并返回到没有子节点的父节点。我知道如何进行事件处理,这是我不确定的节点和边缘的更新和重绘。

【问题讨论】:

  • 你有什么方法可以做到这一点吗?需要帮助!

标签: javascript chap-links-library


【解决方案1】:

发布后我发现我的错误,没有使用动态DataSet()。 所以应该是这样的:

var nodes = new vis.DataSet([{id: 1,   label:"Parent Node"}]);
var edges = new vis.DataSet([]);

然后你可以像这样更新:

nodes.update({id: 2,   label:"Child Node1"});
nodes.update({id: 3,   label:"Child Node2"});
nodes.update({id: 4,   label:"Child Node3"});

edges.update({from: 1, to: 2});
edges.update({from: 1, to: 3});
edges.update({from: 1, to: 4}); 

【讨论】:

  • 你是如何折叠节点的?从网络中删除/隐藏或其他?
  • @RohitTotala 这很老了,我不记得了。我最终改用 D3,它更容易使用。
  • 好的,我通过递归调用更新(隐藏)网络中的子节点和边缘来做到这一点。这个周末我会为 SO 做一个小提琴。谢谢。我猜 D3 对分层网络/树有很好的选择。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-09-18
  • 1970-01-01
  • 2018-03-10
  • 2016-05-17
  • 1970-01-01
  • 1970-01-01
  • 2018-07-31
相关资源
最近更新 更多