2016-03-27 10 views
0

Ist es möglich, mehrere Cytoscape-Grafikinstanzen zu verwenden, die nicht miteinander verwandt sind, aber dieselben Quellelemente verwenden? HierMehrere nicht zusammenhängende Graphinstanzen mit denselben Quellelementen?

ist ein Beispiel dafür, was ich zu tun habe versucht: https://jsfiddle.net/fa8hbdnh/

var elements = [ 
     { data: { id: 'n1'}, position: {x:100, y: 100}}, 
     { data: { id: 'n2'}, position: {x:150, y :150}}, 
     //--->Edges---> 
     { data: {id: 'e1', source: 'n1', target: 'n2'}}, 
    ]; 

    var graph1 = cytoscape({ 
      headless: true, 
      elements: elements 
    }); 
    var graph2 = cytoscape({ 
     headless: true, 
     elements: elements 
    }); 

    graph1.elements()[0].data('foo',100);   // Only changing graph1... 
    console.log(graph2.elements()[0].data('foo')); // ...however graph2 is also modified 

(dies erfordert die Bibliothek Cytoscape - http://js.cytoscape.org/)

Wie Sie sehen können, ich ändern graph1 aber Graph 2 auch betroffen. Gibt es eine Möglichkeit, Datenelemente in einer Instanz zu speichern, ohne andere Instanzen zu beeinflussen?

Antwort

0

Cytoscape.js nimmt nur an, was Sie übergeben. Es macht keine Annahmen über Ihren JSON, und es kopiert keine Daten - weil das> 90% der Anwendungsfälle verlangsamen würde.

Kopieren Sie entweder Ihren JSON, bevor Sie ihn übergeben, oder übergeben Sie Sammlungen von der ersten Instanz an nachfolgende Instanzen. Sammlungen werden immer von einer Instanz in eine andere kopiert, wie in den Dokumenten angegeben, da nur so Sammlungen übergeben werden können.

Verwandte Themen