有谁知道如何触发节点重绘?我有一个案例,底层数据对象更新其“标签”属性,我可以触发 cytoscape 重绘标签的唯一方法是;
- 在节点上调用
.selectify()
then的某种组合。.unselectify()
- 替换标签使用
.data('label', ...)
- 我实际上用它自己替换它。
这两个都感觉有点老套,我想我在 API 中遗漏了一些明显的东西。任何人都可以帮忙吗?
谢谢,瑞安。
有谁知道如何触发节点重绘?我有一个案例,底层数据对象更新其“标签”属性,我可以触发 cytoscape 重绘标签的唯一方法是;
.selectify()
then的某种组合。.unselectify()
.data('label', ...)
- 我实际上用它自己替换它。这两个都感觉有点老套,我想我在 API 中遗漏了一些明显的东西。任何人都可以帮忙吗?
谢谢,瑞安。
在不使用 Cytoscape API 的情况下,您不会更新您提供给 Cytoscape 的数据中的任何内容。
如果你这样做node.data().foo.bar = 'baz'
了,Cytoscape 不知道你已经改变了什么。
如果你这样做node.data('foo.bar', 'baz')
了,Cytoscape 就知道你已经改变了模型。
像大多数应用程序一样,您的应用程序可能在比 Cytoscape 更高的层中有一些模型。因此,当您的真实模型发生变化时,只需使用模型的 JSON 表示来更新 Cytoscape。假设您的模型使用事件发射器,只需执行类似modelObj.on('change', function(){ this.node.data( this.json() ) })
.