多个不相关的图形实例具有相同的源元素?
问题描述:
是否有可能有多个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或将第一个实例的集合传递给后续实例。正如文档中提到的,集合总是从一个实例复制到另一个实例,因为这是通过集合的唯一方式。