antvis / X6

🚀 JavaScript diagramming library that uses SVG and HTML for rendering.
https://x6.antv.antgroup.com
MIT License
5.52k stars 1.66k forks source link

2.x版本 edge:change:target 应该在改变结束后发生 #3103

Closed JamesTing closed 1 year ago

JamesTing commented 1 year ago

问题描述

graph.on('edge:change:target',()={})这个事件, 1.x时,是改变结束后发生的。 升级到2.x后,变成“实时发生”了。 这导致保存到服务器的频率太高了。

重现链接

暂无

重现步骤

  1. 为edge添加工具source-arrowhead或target-arrowhead;
  2. 使用工具改变edge的target或source;
  3. 观察edge:change:target事件

预期行为

我期望edge:change:target在事件发生后发送,而不是没拖动一点点持续发送。 或者,新增一个edge:change:target“完成态”的事件。

平台

屏幕截图或视频(可选)

No response

补充说明(可选)

No response

NewByVector commented 1 year ago

试了一下,从 1.0.1 版本开始就是一直触发的,并没有你说的 2.x 版本才一直触发。测试链接

JamesTing commented 1 year ago

试了一下,从 1.0.1 版本开始就是一直触发的,并没有你说的 2.x 版本才一直触发。测试链接

@NewByVector 抱歉,是我搞错了。请问有什么方法可以监听 source 或 target 变化完成时的事件么?我需要捕获这个事件保存到服务器,实时变化对服务器的请求太频繁了。

NewByVector commented 1 year ago

@JamesTing edge:connected 事件能否满足你要求?

JamesTing commented 1 year ago

@NewByVector 无法满足,因为用户希望在画板中绘制一个“独立自由”的line。

有如下使用场景: 1、绘制一个坐标系图形,拥有XY十字交叉轴; 2、箭头只表示大概指向,并不和某个节点“严格”连接。

我理解line之所以有这些不便,反映了X6对图编辑模型的理解:画布=节点+边,节点是表示对象的,边表示对象的关系。似乎,edge不支持dnd也反应了这个思路。

我个人理解,这个模型比较贴合结构化的图渲染场景。对于图编辑,则有点“严格”了,实际的图编辑场景是相对轻松、自由的。这就导致X6确实很强大,但对于日常绘制一些简单图形却不那么容易。

我想办法hack一下吧。 多谢回复,早点休息♨️

x6-bot[bot] commented 6 months ago

This thread has been automatically locked because it has not had recent activity.

Please open a new issue for related bugs and link to relevant comments in this thread.