2017-09-08 3 views
0

Ich muss die Knoten zu einem bestimmten Knoten verbinden, und markieren Sie sie. Die Funktion "Komponenten" sieht dafür gut aus, aber meine Traversierung schlägt fehl. Die Komponentensammlung hat die Größe 1 und nur der ursprüngliche Knoten wird hervorgehoben.Iterate verbundene Knoten in cytoscape.js

cynode = cy.getElementById(idstr); 
comps = cynode.components();  
for (i = 0; i < comps.length; i++) /* really there's only one component */ 
{ 
    comp = comps[i]; 
    alert(comp.size()); /* this always returns 1!! */ 
    comp.nodes().addClass('nodehlt'); /* only the original node gets highlighted */ 
} 

Antwort

1

Aus der Dokumentation:

eles.components(): die angeschlossenen Komponenten holen, nur die Elemente in der anrufenden Sammlung berücksichtigen. Ein Array von Sammlungen wird zurückgegeben, wobei jede Sammlung eine Komponente darstellt.

Wenn der von Ihnen betrachtete Satz von Elementen nur ein einzelner Knoten ist, kann es immer nur eine Komponente geben.

Sie müssen die Komponenten des gesamten Graphen (cy.elements.components()) - oder des Untergraphen, an dem Sie interessiert sind. Von diesen Komponenten müssen Sie dann diejenige finden, die den Knoten von Interesse enthält.

+0

Großartig, danke. Meine Verwirrung war, dass ich dachte, dass es die mit den Elementen des rufenden Satzes verbundenen Komponenten zurückgeben würde. –

+0

Ziemlich die gesamte API ist so strukturiert, dass Sie Abfragen erstellen können, die nur einen bestimmten Untergraphen berücksichtigen - die aufrufende Sammlung. Wenn die Funktion wie beschrieben funktioniert, müssen Sie Elemente aus dem Diagramm entfernen, um Teilgraphenabfragen durchzuführen. – maxkfranz

Verwandte Themen