我将节点标签映射到节点“名称”属性,并且当名称更改时,我需要标签在cy画布上进行更新。我一直在用这种风格
style: cytoscape.stylesheet()
.selector('node')
.css({
'color': '#000000',
'content': 'data(name)',
'text-valign': 'center',
'background-color': '#FFFFFF',
'border-width': 1,
'border-color': '#707070'
})
Run Code Online (Sandbox Code Playgroud)
和一个节点
cy.add(
{ group: "nodes", data: { id: "n0", name: 'name' }, position: { x: 100, y: 100 } }
);
Run Code Online (Sandbox Code Playgroud)
并使用更新节点
cy.$('#n0').data('name', 'newName')
Run Code Online (Sandbox Code Playgroud)
使用2.2.10,节点标签(内容)将按预期在画布上更新。由于升级到版本2.3.1,因此不再起作用。任何有关如何再次实现这一目标的建议将不胜感激!
编辑 我不知道为什么不行,但是对于其他有此问题的人,暂时我正在使用eles.flashClass()来非常短暂地删除该节点的节点标签。删除临时类后,将呈现正确的标签。例如
在init上设置的css样式
.selector('node.nolabel')
.css({
'content': ''
})
Run Code Online (Sandbox Code Playgroud)
然后重命名节点
cy.$('#n0').data('name', 'newName').flashClass('nolabel',1) //class applied for 1ms then removed
Run Code Online (Sandbox Code Playgroud)
这有效,但似乎没有必要,我真的很想知道为什么
content: 'data(name)'
Run Code Online (Sandbox Code Playgroud)
无法正常工作-我不知道这是一个错误还是做错了,只是它在版本2.3.0以下才有效