2017-06-24 6 views
1

Ich schreibe einen grundlegenden gerichteten Diagrammeditor und lade das anfängliche Diagramm von JSON.Das Löschen von d3-Grafikknoten lässt noch vorhandene Zeilen

Mein Problem ist, dass beim Löschen von Knoten häufig Zeilen übrig bleiben (oft völlig unabhängig von dem Knoten, den ich entferne - Sie können dies replizieren, indem Sie eine Reihe von Knoten durchlaufen und löschen). Die verbleibenden Artefakte bewegen sich auch nicht mit dem Force-Layout.

Mein Verständnis ist, dass link.exit().remove(); sollten alle Links, die meine aktuelle Datensatz nicht übereinstimmen:

link = link.data(links,function(d){return d.source.Id + "_" + d.target.Id;}); 

Ein Link zu meinem Beispiel:

https://jsfiddle.net/slizice/9a8d6zsm/60/ (einen Knoten klicken und klicken delete/backspace entfernen)

Ich habe dies nicht beobachtet, bis ich mit größeren Datensätzen zu arbeiten begann.

Alle Ideen würden sehr geschätzt werden!

Edit:

sieht aus wie ein doppelter Link verantwortlich sein könnte. Ich werde eine Antwort schreiben, sobald ich eine Lösung habe.

Antwort

0

Sieht so aus, als ob mein serverseitiger Code, der Links generiert, sie in manchen Fällen mehrfach durchläuft und Duplikate erzeugt.

Um Duplikate auf der Client-Seite zu behandeln, überprüfe ich einfach das Array zuerst:

exists = false; 
    edges.forEach(function(e) { 
    if ((e.source.Id == sourceNode.Id) && (e.target.Id == targetNode.Id)) { 
     exists = true; 
    } 
    }); 
    if (!exists) { 
    edges.push({ 
     source: sourceNode, 
     target: targetNode, 
     value: e.Value 
    }); 
    } 
Verwandte Themen