[Bug Report]: 自定义节点内,插入dom 生成logicflow实例,怎么判断拖拽的节点,是否在我的自定义节点画布内?
发生了什么?
logicflow/core版本
1.2.17
logicflow/extension版本
1.2.18
logicflow/engine版本
No response
浏览器&环境
Chrome
拖拽节点的 MouseEvent的 clientX, clientY 和 当前自定义画布位置 无法比较
因为不再同一层级上,无法进行比较, 目前的解决方案,只能默认画布 先 新增节点,然后根据 节点 x y位置信息 去 比较, 如果在循环容器内, 默认画布删除掉新增的节点, 循环容器内 新增节点,但是这样处理 性能会有损耗。 目前还有问题两个问题: 1 自定义节点,setHTML 方法,会执行两次, 这个怎么解决? 2 挪动循环容器内的 节点, 整个循环容器 也会跟着动,怎么解决?
目前测试,相交时,获取的节点位置信息,x y不对 (后拖拽的节点位置在循环容器中间,但是得到的x 小于 循环容器的 x),
怎么实现 自定义节点 拖拽 修改宽高(动态修改自定义节点的宽高)
setHtml 方法 执行两次 在线demo: https://codesandbox.io/p/sandbox/heuristic-voice-xlwtzc?file=%2FApp.tsx%3A36%2C1-42%2C11
setHtml, 重复两次,这个问题,帮忙看看下
@DymoneLewis @boyongjiong 👀👀
来了来了 let me CC
setHtml, 重复两次,这个问题,帮忙看看下
目前logicflow的机制是当一个新的节点拖进画布的时候会先创建一个虚拟节点供用户操作,此时会触发一次(即虚拟节点的setHtml);用户触发mouseup后才会创建一个真实节点,此时会触发第二次(真实节点的setHtml),所以我理解这里setHtml调用两次没问题。 by the way 如果想要判断新拖拽进画布的节点是否在循环容器里,可以试试监听node:dnd-drag事件,它会把当前拖拽的虚拟节点的信息,可以用其中的x y和循环容器的位置做比较(这样做性能损耗应该也能小一些
挪动循环容器内的 节点, 整个循环容器 也会跟着动 的问题 我再看下
setHtml, 重复两次,这个问题,帮忙看看下
目前logicflow的机制是当一个新的节点拖进画布的时候会先创建一个虚拟节点供用户操作,此时会触发一次(即虚拟节点的setHtml);用户触发mouseup后才会创建一个真实节点,此时会触发第二次(真实节点的setHtml),所以我理解这里setHtml调用两次没问题。 by the way 如果想要判断新拖拽进画布的节点是否在循环容器里,可以试试监听node:dnd-drag事件,它会把当前拖拽的虚拟节点的信息,可以用其中的x y和循环容器的位置做比较(这样做性能损耗应该也能小一些
挪动循环容器内的 节点, 整个循环容器 也会跟着动 的问题 我再看下
触发两次setHTML,拿到model.id 也不一样, 之后的代码会执行两次,如何规避?setHTML 之后需要执行的 js代码,放在哪个时机处理比较合适? 判断拖拽进循环容器,这个功能已经实现了。
setHtml, 重复两次,这个问题,帮忙看看下
目前logicflow的机制是当一个新的节点拖进画布的时候会先创建一个虚拟节点供用户操作,此时会触发一次(即虚拟节点的setHtml);用户触发mouseup后才会创建一个真实节点,此时会触发第二次(真实节点的setHtml),所以我理解这里setHtml调用两次没问题。 by the way 如果想要判断新拖拽进画布的节点是否在循环容器里,可以试试监听node:dnd-drag事件,它会把当前拖拽的虚拟节点的信息,可以用其中的x y和循环容器的位置做比较(这样做性能损耗应该也能小一些 挪动循环容器内的 节点, 整个循环容器 也会跟着动 的问题 我再看下
触发两次setHTML,拿到model.id 也不一样, 之后的代码会执行两次,如何规避?setHTML 之后需要执行的 js代码,放在哪个时机处理比较合适? 判断拖拽进循环容器,这个功能已经实现了。
可以监听node:dnd-add事件,触发后再执行后续逻辑来规避
感谢您的反馈,辛苦试一下上面说的规避方案是否可行,如果还有相关问题可以重启我们继续跟进😊