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

Multiple unrelated graph instances with the same source elements?

是否可以有多个不相关但共享相同源元素的 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/

如您所见,我更改了图 1,但图 2 也受到了影响。有没有一种方法可以在一个实例上保存数据元素而不影响其他实例?

Cytoscape.js 只接受你传递给它的内容。它不会对您的 JSON 做出任何假设,也不会复制数据——因为那样会减慢 >=90% 的用例。

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