1

有谁知道如何触发节点重绘?我有一个案例,底层数据对象更新其“标签”属性,我可以触发 cytoscape 重绘标签的唯一方法是;

  1. 在节点上调用.selectify()then的某种组合。.unselectify()
  2. 替换标签使用.data('label', ...)- 我实际上用它自己替换它。

这两个都感觉有点老套,我想我在 API 中遗漏了一些明显的东西。任何人都可以帮忙吗?

谢谢,瑞安。

4

1 回答 1

0

在不使用 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() ) }).

于 2017-02-10T16:12:37.940 回答