2015-07-02 5 views
8

Ich habe eine Anforderung, einige Knoten und Kanten abhängig von einigen Daten zu verstecken oder sichtbar zu machen. Ich kann es erreichen, indem ich die Daten von visjs durchquere, aber das wird jedes Mal, wenn man sich ein- oder ausblendet, eine Stabilisierung auslösen (das überschreibt vorhandene Daten).Wie aktualisiert man eine Knoten- oder Kanteneigenschaft von visjs mit angularjs?

fand ich this example die add unter Verwendung update & remove Funktionen, Updates und entfernt einen Knoten durch direktes Ändern nodes Wert hinzufügt. Dies tut dynamisch diese Operationen ohne Stabilisierung, aber wenn ich die gleiche Sache in AngularJS versuchen begegne mir die folgenden Fehler

org_nodes.update ist keine Funktion

Snippet von der Quelle von this example genommen

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); 
} 

Überprüfen Sie meine plunker, die dies zeigt. Was fehlt mir hier? Hinweis - Ich benutze angular-visjs

Antwort

4

Sie scheinen etwas aus zu sein, wenn Sie update aufrufen. In Bezug auf dieses Beispiel benötigt die Funktion update ein übergebenes Argument, das eine ist. Sie liefern stattdessen ein einfaches Array. Das können wir ein paar Möglichkeiten, nähern, aber lassen Sie uns die Änderung vornehmen, wenn $scope.data als solche

$scope.data = { 
    nodes: new vis.DataSet(org_nodes), 
    edges: edges 
}; 

nun erklärt, dass wir dies getan haben, innerhalb $scope.agentClicked unseren Aufruf modifizieren können unsere vis.DataSet Objekt verweisen

$scope.agentClicked = function() { 
    $scope.data.nodes.update([ ... ]); 
} 

Plunker Link - aktualisierte Demo