!!!###!!!title=连线编辑——VisActor/VGraph 教程文档!!!###!!!!!!###!!!description=EdgeEditor 是 vGraph 中适用于图编辑场景的连线编辑组件,用于从锚点中拖拽新增连线、修改连线端点等操作。在配置了[操作栈 Stack](docs/)和[智能路由 Router](docs/)组件后,EdgeEditor组件内会在拖拽连线的过程中,完成操作栈的相关逻辑以支持撤销(undo)和重做(redo),以及自动更新相关连线的智能路由路径。以下是连线编辑组件 EdgeEditor 的使用方法示例。也可以在 demo 中进行体验。```javascriptimport { Graph, EdgeEditor } from "@visactor/vgraph";const edgeEditor = new EdgeEditor(graph, { stack, router, ...})```!!!###!!!

连线编辑 EdgeEditor

EdgeEditor 是 vGraph 中适用于图编辑场景的连线编辑组件,用于从锚点中拖拽新增连线、修改连线端点等操作。在配置了操作栈 Stack智能路由 Router组件后,EdgeEditor组件内会在拖拽连线的过程中,完成操作栈的相关逻辑以支持撤销(undo)和重做(redo),以及自动更新相关连线的智能路由路径。

以下是连线编辑组件 EdgeEditor 的使用方法示例。也可以在 demo 中进行体验。

import { Graph, EdgeEditor } from "@visactor/vgraph";
const edgeEditor = new EdgeEditor(graph, {
	stack,
	router,
	...
})

配置项

EdgeEditorOptions 定义如下。

字段类型描述
stackStack操作栈实例。用于组件在拖拽锚点连线过程中完成操作栈相关逻辑以支持撤销(undo)和重做(redo)。如未传入,则节点拖拽导致的数据变更将不进入操作栈。
routerRouter智能路由组件实例。用于组件在拖拽锚点连线过程中完成智能路由路径的自动更新。
autoTranslateboolean默认开启。开启后,拖拽到视图边界后将自动平移画布以扩扩展视图边界。
tempEdgeStylesRecord<string, any>拖拽过程中临时连线的样式。默认为蓝色虚线,即:{ strokeStyle: '#3073F2', lineDash: [4, 4] }
editTerminalboolean是否可编辑连线的端点。默认为 true。开启后用户可以选中连线拖拽两头端点编辑连线。
dragEdgeToEditboolean是否允许直接拖拽连线来编辑节点,需同时打开 editTerminal 配合使用。
editAnchorStylesRecord<string, any>处于连线编辑状态下连线两头锚点的样式。 可参考Circle样式。
magnetboolean是否自动吸附锚点。
magnetDistnumber自动吸附锚点的生效距离,默认 28px。
magnetAnchorStylesRecord<string, any>被吸附锚点的样式, 可参考Circle样式。
shouldTrigger(e: GraphEvent, shape: Shape, target: Node, edge?: Edge) =>boolean判断是否可触发的函数。
shouldMagnet(source: Node, target: Node, anchor: AnchorConfigs) =>boolean判断是否可吸附的函数。
shouldDrop(source: Node, target: Node, sourceAnchor: number, targetAnchor: number, edit: boolean) =>boolean判断是否可放置的函数。
onDragStart(node: Node, e: GraphEvent) =>void拖拽开始时触发的函数。
onDragEnter(node: Node, e: GraphEvent) =>void拖拽过程中经过节点时触发的函数。
onDragLeave(node: Node, e: GraphEvent) =>void拖拽过程中离开节点时触发的函数。
onDrag() =>void拖拽过程中移动鼠标时触发的函数。
onDrop(source: Node, target: Node) =>void放置成功后触发的函数。
showAnchors(anchorConfigs: AnchorConfigs, anchorShape?: Layer, node: Node) =>boolean在拖拽过程中,哪些锚点应当显示(一般情况下代表可连接)。例如业务仅允许从节点的输出锚点连接到另一个节点的输入锚点,可以用这个方法将所有输出锚点隐藏。

实例方法

实例方法返回值描述
enable()void开启组件。
disable()void关闭组件。
destroy()void组件销毁。