gpt4 book ai didi

javascript - cytoscape.js 中的动态节点内容(标签)

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:46:08 25 4
gpt4 key购买 nike

我将节点标签映射到节点“名称”属性,并且我需要在更改名称时在 cy Canvas 上更新标签。我一直在用的风格

style: cytoscape.stylesheet()
.selector('node')
.css({
'color': '#000000',
'content': 'data(name)',
'text-valign': 'center',
'background-color': '#FFFFFF',
'border-width': 1,
'border-color': '#707070'
})

和一个节点

cy.add(
{ group: "nodes", data: { id: "n0", name: 'name' }, position: { x: 100, y: 100 } }
);

并更新节点

cy.$('#n0').data('name', 'newName')

使用 2.2.10,节点标签(内容)在 Canvas 上按预期更新。自升级到 2.3.1 版后,这不再有效。对于如何再次实现这一目标的任何建议,我们将不胜感激!

编辑我不知道为什么这不起作用,但对于遇到此问题的其他人,我暂时使用 eles.flashClass() 非常简单地删除节点的节点标签。当删除临时类时,将呈现正确的标签。例如

在初始化时设置的css样式

.selector('node.nolabel')
.css({
'content': ''
})

然后重命名节点

cy.$('#n0').data('name', 'newName').flashClass('nolabel',1) //class applied for 1ms then removed

这行得通,但似乎没有必要,我真的很想知道为什么

content: 'data(name)'

不工作——我不知道这是一个错误还是我做错了什么,只知道它在 2.3.0 版本以下工作

最佳答案

请关注这张票:https://github.com/cytoscape/cytoscape.js/issues/678

来自工单:

This is probably due to the performance enhancements on style for 2.3. Now, instead of style being applied cumulatively, a highly performant diff of matching selector contexts is done. And only the properties that need to be applied as a result of the diff are applied. I suspect that because the matching contexts are the same etc, the style is not updated.

关于javascript - cytoscape.js 中的动态节点内容(标签),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26123468/

25 4 0