多个不相关的图形实例具有相同的源元素?

多个不相关的图形实例具有相同的源元素?

问题描述:

是否有可能有多个cytoscape图形实例是不相关的,但共享相同的源元素?多个不相关的图形实例具有相同的源元素?

这里是我想要做的一个例子: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 

(这需要Cytoscape的库 - http://js.cytoscape.org/

正如你所看到的,我改变graph1但图2是也受到影响。有没有办法在一个实例上保存数据元素而不影响其他实例?

Cytoscape.js只是通过你传递它。它不会对你的JSON做任何假设,也不会复制数据 - 因为这会减慢使用案例的90%以上。

在传递它之前复制JSON或将第一个实例的集合传递给后续实例。正如文档中提到的,集合总是从一个实例复制到另一个实例,因为这是通过集合的唯一方式。