我需要根据某些数据隐藏或取消隐藏某些节点和边缘。我可以通过遍历visjs的数据来实现它,但每次隐藏或取消隐藏时都会触发稳定(这会覆盖现有数据)。
我找到this example,通过使用nodes
,add
&直接更改update
值来添加,更新和删除节点remove
功能。这会动态地执行这些操作而不会稳定,但是当我在AngularJS中尝试相同的操作时,我会遇到以下错误
的摘录org_nodes.update不是函数
function addNode() {
var newId = (Math.random() * 1e7).toString(32);
nodes.add({id:newId, label:"I'm new!"});
nodeIds.push(newId);
}
function changeNode1() {
var newColor = '#' + Math.floor((Math.random() * 255 * 255 * 255)).toString(16);
nodes.update([{id:1, color:{background:newColor}}]);
}
function removeRandomNode() {
var randomNodeId = nodeIds[Math.floor(Math.random() * nodeIds.length)];
nodes.remove({id:randomNodeId});
var index = nodeIds.indexOf(randomNodeId);
nodeIds.splice(index,1);
}
查看演示此内容的plunker。我在这里失踪的是什么?注意 - 我正在使用angular-visjs
答案 0 :(得分:3)
调用update
时,您似乎稍微偏离了。参考该示例,update
函数需要传递的参数为new vis.DataSet
。而是提供一个简单的数组。我们可以通过几种方式来解决这个问题,但是在声明$scope.data
时我们会做出改变
$scope.data = {
nodes: new vis.DataSet(org_nodes),
edges: edges
};
现在我们已经完成了这项工作,在$scope.agentClicked
内修改我们的调用以引用我们的vis.DataSet
对象
$scope.agentClicked = function() {
$scope.data.nodes.update([ ... ]);
}
Plunker Link - 更新了演示