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

时间:2016-03-27 22:15:23

标签: cytoscape.js

是否可能有多个不相关但共享相同源元素的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也受到了影响。有没有办法在一个实例上保存数据元素而不影响其他实例?

1 个答案:

答案 0 :(得分:0)

Cytoscape.js只是接受你传递的内容。它没有对您的JSON做出任何假设,并且它不会复制数据 - 因为这会减慢> = 90%的用例。

在传入JSON之前复制JSON,或者将集合从第一个实例传递到后续实例。如文档中所述,集合总是从一个实例复制到另一个实例,因为这是传递集合的唯一方法。