我正在尝试使用“父”字段动态更新我的 cy 对象的节点。首次从 json 文件加载元素时,它们没有父字段。文档说我应该能够简单地设置一个特定的数据字段cy.data( name, value )
。但是,这似乎只适用于属性名称是已经存在的。
我曾想过创建每个节点的副本以添加我的父属性,然后删除旧节点;但是我的图表非常大,这似乎是最后的手段。
我正在尝试使用“父”字段动态更新我的 cy 对象的节点。首次从 json 文件加载元素时,它们没有父字段。文档说我应该能够简单地设置一个特定的数据字段cy.data( name, value )
。但是,这似乎只适用于属性名称是已经存在的。
我曾想过创建每个节点的副本以添加我的父属性,然后删除旧节点;但是我的图表非常大,这似乎是最后的手段。
我用我的代码尝试了这个并让它与.move()一起正常工作:
var cy = window.cy = cytoscape({
container: document.getElementById('cy'),
style: [{
selector: 'node',
style: {
'label': 'data(id)'
}
},
{
selector: 'edge',
style: {
'curve-style': 'bezier',
'target-arrow-shape': 'triangle'
}
}
],
elements: {
nodes: [{
data: {
id: 'a',
parent: ''
}
},
{
data: {
id: 'b',
parent: ''
}
},
{
data: {
id: 'c',
parent: ''
}
},
{
data: {
id: 'd',
parent: 'p'
}
},
{
data: {
id: 'p',
parent: ''
}
}
],
edges: [
]
}
});
cy.bind('click', 'node', function(evt) {
evt.target.move({
parent: cy.getElementById('p').id()
})
});
body {
font-family: helvetica neue, helvetica, liberation sans, arial, sans-serif;
font-size: 14px;
}
#cy {
position: absolute;
left: 0;
top: 0;
bottom: 0;
right: 0;
z-index: 1;
}
h1 {
opacity: 0.5;
font-size: 1em;
font-weight: bold;
}
<head>
<title>cytoscape-add-attribute demo</title>
<meta name="viewport" content="width=device-width, user-scalable=no, initial-scale=1, maximum-scale=1">
<script src="https://unpkg.com/cytoscape/dist/cytoscape.min.js"></script>
</head>
<body>
<h1>cytoscape add-attribute-demo</h1>
<div id="cy"></div>
</body>
该文档有两个版本的 .data(),一个用于核心 cy 元素,一个用于任何元素,还有节点、边、画布......
我认为您的问题来自于此,如果不是,请告诉我您确切使用的代码:D THX