Vis.js网络图不随节点更改而更新
Vis.js network graph not updating with node changes
我有一个函数,可以清除节点或边缘数据集中可能存在的任何数据,并继续用新数据重新填充它们。这是一个分层网络,在创建所有节点和边之后,级别是动态设置的,因此节点的级别属性最终是由 nodes.update() 调用添加。
节点的级别设置正确,可以在我的控制台日志中看到,但图表没有反映级别。不显示任何错误。看到节点似乎是正确的,我不认为这是设置级别的方法的问题,但我能想到的唯一可能干扰的其他事情是在像我这样的角度工厂中使用它,nodes.update() 不触发图形的重新渲染,或者我的选项。任何见解都值得赞赏,因为我真的不知道为什么设置级别不会改变我的图表。
很抱歉缺少信息。我只是不知道从哪里开始,也不想分享我的整个文件。
网络工厂:
var nodes, edges, network;
visApp.factory('networkFactory', function() {
var service = {};
service.init = function() {
// create an array with nodes
nodes = new vis.DataSet();
// create an array with edges
edges = new vis.DataSet();
// create a network
var container = document.getElementById('callFlow');
var data = {
nodes: nodes,
edges: edges
};
var options = {
physics: false,
nodes: {
shape: 'box',
size: 25
},
edges: {
smooth: {
type: 'cubicBezier',
roundness:.75
}
},
layout: {
hierarchical: {
direction: 'LR',
sortMethod: 'directed'
}
},
interaction: {
navigationButtons: true
}
};
network = new vis.Network(container, data, options);
};
service.updateVis = function(profile) {
try {
console.log("updating network...");
clearNetwork();
addNodesFromProfile(profile);
addEdgesFromProfile(profile);
console.log("setting hierarchical levels");
setLevels("ENTRY", 1, 1);
console.log("network updated:'n" + JSON.stringify(nodes.get()));
}
catch(err) {alert(err)}
};
控制台.log:
updating network...
adding nodes
adding edges
setting hierarchical levels
network updated:
[{"id":"mainMenu","label":"mainMenu","level":4},{"id":"broadcast","label":"broadcast","level":3},{"id":"greeting","label":"greeting","level":2},{"id":"salesMenu","label":"salesMenu","level":5},{"id":"exitAssurance","label":"exitAssurance","level":5},{"id":"EXIT","label":"EXIT","level":7},{"id":"exitArchitecture","label":"exitArchitecture","level":6},{"id":"exitSalesEast","label":"exitSalesEast","level":6},{"id":"exitCXAnalytics","label":"exitCXAnalytics","level":6},{"id":"servicesMenu","label":"servicesMenu","level":5},{"id":"exitSalesWest","label":"exitSalesWest","level":6},{"id":"exitOther","label":"exitOther","level":5},{"id":"ENTRY","label":"ENTRY","level":1}]
add
network.body.emitter.emit('_dataChanged')
以前
network.redraw()
nodes.update()
后,您可以使用network.redraw()
函数刷新视图。
相关文章:
- d3基于用户选择动态更新节点
- 有条件更新d3.js力图中节点的最佳方法
- 更新从Mysql查询检索到的数据?Node.js节点mysql
- 查找与锁定和更新调度相关的一个或两个节点模块
- 将节点.js更新为 0.12 标头错误
- 节点.js表单更新有和没有 ajax
- Jqgrid Treegrid在更新本地源数据时重新加载节点
- 在节点脚本中,如何监视文件的更改并获取更新的内容
- 节点js可以计算两个输入字段的值并更新另一个字段吗?
- 节点 + MONGO:更新记录需要回调
- 确定元素是否由 JS 添加,还是原始 HTML 文档 *OR* 检测脚本何时通过 InnerHTML 更新节点
- 按钮更新节点.js和 HTML
- D3力定向图:更新节点位置
- InfoVis SpaceTrees:在表单提交后更新节点信息
- 如何使用猫鼬更新节点中的内部文档
- 更新节点在 D3 强制布局中的子元素位置
- Firebase -最快的方式更新节点值与节点值+值
- Ionic Js -更新节点到4.1.1 (Windows)后出现错误
- 如何在Drupal中使用javascript从节点页面更新节点
- 简单的猫鼬变量更新节点js