diff --git a/simple-mind-map/src/constants/defaultOptions.js b/simple-mind-map/src/constants/defaultOptions.js index cb45e926..782cb4c0 100644 --- a/simple-mind-map/src/constants/defaultOptions.js +++ b/simple-mind-map/src/constants/defaultOptions.js @@ -358,6 +358,8 @@ export const defaultOpt = { }, // 是否允许调整关联线两个端点的位置 enableAdjustAssociativeLinePoints: true, + // 关联线连接即将完成时执行,如果要阻止本次连接可以返回true,函数接收一个参数:node(目标节点实例) + beforeAssociativeLineConnection: null, // 【TouchEvent插件】 // 禁止双指缩放,你仍旧可以使用api进行缩放 diff --git a/simple-mind-map/src/plugins/AssociativeLine.js b/simple-mind-map/src/plugins/AssociativeLine.js index a65ec273..27694200 100644 --- a/simple-mind-map/src/plugins/AssociativeLine.js +++ b/simple-mind-map/src/plugins/AssociativeLine.js @@ -446,6 +446,12 @@ class AssociativeLine { // 完成创建连接线 completeCreateLine(node) { if (this.creatingStartNode.uid === node.uid) return + const { beforeAssociativeLineConnection } = this.mindMap.opt + let stop = false + if (typeof beforeAssociativeLineConnection === 'function') { + stop = beforeAssociativeLineConnection(node) + } + if (stop) return this.addLine(this.creatingStartNode, node) if (this.overlapNode && this.overlapNode.getData('isActive')) { this.mindMap.execCommand('SET_NODE_ACTIVE', this.overlapNode, false)