是否可能有多个不相关但共享相同源元素的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也受到了影响。有没有办法在一个实例上保存数据元素而不影响其他实例?
答案 0 :(得分:0)
Cytoscape.js只是接受你传递的内容。它没有对您的JSON做出任何假设,并且它不会复制数据 - 因为这会减慢> = 90%的用例。
在传入JSON之前复制JSON,或者将集合从第一个实例传递到后续实例。如文档中所述,集合总是从一个实例复制到另一个实例,因为这是传递集合的唯一方法。