添加Edge动态visjs

时间:2016-09-26 11:32:16

标签: vis.js

任何人都可以帮助我在这个visjs网络中动态添加边缘吗? 实际上,我正在尝试使用拖放操作将节点添加到画布,但是当我单击节点并将边缘动态添加到画布上现有的另一个节点时,我需要帮助添加边缘。

4 个答案:

答案 0 :(得分:4)

您可以使用vis.js'更新'功能添加节点或边缘dinamycally。您只需传入一个数组,其中包含您尝试添加的节点或边的集合。你这样称呼它:

nodes.update(updateNodesArray)

OR

edges.update(updateEdgesArray)

其中nodes和edges是您最初为网络创建的vis.DataSet实例。

可以在http://visjs.org/docs/data/dataset.html

找到完整的文档

答案 1 :(得分:1)

这个答案的目的是帮助我自己停止使用谷歌搜索,因为我显然一直忘记了解决方案,并且一直先停留在这里...

从技术上讲,它也是该问题的答案:

function AddEdge(from_id, to_id)
{
    network.body.data.edges.add([{from: from_id, to: to_id}])
}

它作为网络数据节点是vis数据集而工作,对其进行更新(也通过添加/删除方法)也将更新渲染。

答案 2 :(得分:0)

从visjs查看此示例。 http://visjs.org/examples/network/other/manipulation.html

您可以通过配置网络来自定义添加\编辑\删除的方式,如下所示:

manipulation: {
        enabled: false,
          addNode: function (data, callback) {
              // filling in the popup DOM elements
              console.log('add', data);
          },
          editNode: function (data, callback) {
              // filling in the popup DOM elements
              console.log('edit', data);
          },
          addEdge: function (data, callback) {
              console.log('add edge', data);
              if (data.from == data.to) {
                  var r = confirm("Do you want to connect the node to itself?");
                  if (r === true) {
                      callback(data);
                  }
              }
              else {
                  callback(data);
              }
          }
      }

答案 3 :(得分:0)

var network = new vis.Network(container, datas, options)
//And then
network.addEdgeMode();

您可以通过拖放创建边缘