自定义连线 (Custom Edge)
连线不仅仅是两个点之间的路径。在 yh-flow 中,您可以利用 #edge 插槽完全接管连线的渲染过程。这允许您在连线右上方添加复杂的交互按钮、实时状态标签,甚至是动态的流体特效。
高级自定义边示例 (Advanced Custom Edge Example)
在该示例中,我们向连线中心添加了一个功能按钮。点击按钮可以快速删除该连线或执行其它业务操作。示例使用 v-model:edges,删除后父组件与画布连线列表保持同步。
带移除工具的连线
实现原理解析
- 插槽数据:
#edge插槽暴露了edge数据对象(包括计算出的labelX和labelY坐标)以及一个预计算好的 SVGpath命令字符串。 - SVG 上下文:由于您是在
<svg>元素内部进行渲染,因此应使用<g>(分组)标签将路径和 UI 覆盖层包装在一起。 - HTML 覆盖层 (foreignObject):要在 SVG 内部使用标准的 HTML 元素(如
div或button),必须将它们包装在定义了width和height的<foreignObject>中。 - 事件冒泡:在覆盖层按钮上使用
@click.stop,以防止Flow引擎触发选择或其他边级别的点击处理程序。