我有一组存储在数据库中的社区亲属,他们之间有关系。
我试图以一个人为基础,获得这个人的所有死者,并使用vis.js在网络图中表示。
所有请求都是使用ajax生成的,所以我需要一种从servlet获取节点和边缘的方法。我检查了文档,似乎唯一的方法是创建一个json文件,它存储在本地路径然后加载它,但对我来说这是非常古老的,因为该网站将被几十人使用
以下是代码:
var network = null;
var layoutMethod = "directed";
function destroy() {
if (network !== null) {
network.destroy();
network = null;
}
}
function draw() {
destroy();
// randomly create some nodes and edges\n" +
var nodes = <%= request.getParameter("nodes") %>;
var edges = <%= request.getParameter("edges") %>;
// create a network\n" +
var data = {
nodes: nodes,
edges: edges
};
// create a network
var container = document.getElementById('mynetwork');
var options = {
};
var network = new vis.Network(container, data, options);
}
因此,每当您选择一个人时,都会触发操作并且必须更新网络:
$('#subscribe').click(function()
{
$('#descripcion').find('span').remove().end();
$('#descripcion').find('br').remove().end();
$.get( "Almacen", { valor: "C",email:$('#email').val()},function( data){
$("#descripcion").append(data);
}
);
draw();
});
想办法吗? 感谢
答案 0 :(得分:0)
您似乎正在将抓取网络数据的主题与更新网络的主题混为一谈。当您通过ajax获取数据时,应将其保存在某些javascript数据结构中,然后根据此数据更新vis.js网络。要更新vis.js网络,可以在'nodes'和'edges'visDataSets上使用'update'方法。 也就是说,
nodes.update([node1,node2,node3]);
或
edges.update([edge1,edge2,edge3]);
其中节点'i'和edge'i'是描述节点/边的更新(或添加)的对象,它们总是包含'id'字段,因此vis.js可以理解哪个节点/边缘要添加/更新的图表。
实施例: nodes.update([{id:324,title:“My node's new title”},{id:456,hidden:true}]); 该示例修改节点324的标题并隐藏节点456(如果节点尚未存在于网络中,则它实际上将创建它们)。