Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[Bug report] 在initNodeData()中动态创建的对象无法在render()方法中生效 #828

Closed
gh565923562 opened this issue Oct 25, 2022 · 5 comments

Comments

@gh565923562
Copy link
Contributor

问题描述

  1. 问题触发的条件
    在节点 initNodeData() 方法中使用 addNode() 等方法动态创建其他节点对象;使用 render() 方法对该节点数据进行渲染,动态创建的对象无法添加到 graphModel.nodes 中。
  2. 问题原因
    render() 方法渲染数据时,会在之前的 graphModel 中创建动态对象,但返回的是新的graphModel
  3. 希望的表现
    render() 中先构建出新的graphModel对象,然后在新的对象中执行所有节点的构造
@towersxu
Copy link
Collaborator

你是什么需求需要在initNodeData中创建其他节点呢?

@gh565923562
Copy link
Contributor Author

Mark

如图,创建一个标记对象,对象中由可拖拽的标记点,但数据中只记载一个node信息,点是只提供坐标动态生成的。
可能我这是比较特殊的业务需求,但我觉得在渲染时应该是能支持动态创建的,我现在的业务已经通过 graph:rendered 事件来处理了

@towersxu
Copy link
Collaborator

目前看来这个需求相对比较特殊,所以不内置到logicflow里面。目前在graph:rendered中来处理有什么问题吗?如果没有我觉得这样也行。

@gh565923562
Copy link
Contributor Author

主要是会产生不必要的性能开销,如果这种节点比较多,要再生成一次哪个点,并且重新计算连线,大数据下可能性能比较吃紧。

@towersxu
Copy link
Collaborator

可以尝试写个adapter, 在数据渲染前把额外节点给加上。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

3 participants