diff --git a/simple-mind-map/index.js b/simple-mind-map/index.js index 66b643eb..5c20049b 100644 --- a/simple-mind-map/index.js +++ b/simple-mind-map/index.js @@ -587,10 +587,7 @@ class MindMap { this.emit('beforeDestroy') // 清除节点编辑框 this.renderer.textEdit.hideEditTextBox() - // 清除关联线文字编辑框 - if (this.associativeLine) { - this.associativeLine.hideEditTextBox() - } + this.renderer.textEdit.removeTextEditEl() // 移除插件 ;[...MindMap.pluginList].forEach(plugin => { if ( diff --git a/simple-mind-map/src/core/render/TextEdit.js b/simple-mind-map/src/core/render/TextEdit.js index ffa72563..0663ed68 100644 --- a/simple-mind-map/src/core/render/TextEdit.js +++ b/simple-mind-map/src/core/render/TextEdit.js @@ -280,6 +280,17 @@ export default class TextEdit { this.cacheEditingText = '' } + // 删除文本编辑元素 + removeTextEditEl() { + if (this.mindMap.richText) { + this.mindMap.richText.removeTextEditEl() + return + } + if (!this.textEditNode) return + const targetNode = this.mindMap.opt.customInnerElsAppendTo || document.body + targetNode.removeChild(this.textEditNode) + } + // 获取当前正在编辑的内容 getEditText() { return getStrWithBrFromHtml(this.textEditNode.innerHTML) diff --git a/simple-mind-map/src/plugins/AssociativeLine.js b/simple-mind-map/src/plugins/AssociativeLine.js index a4011b62..a65ec273 100644 --- a/simple-mind-map/src/plugins/AssociativeLine.js +++ b/simple-mind-map/src/plugins/AssociativeLine.js @@ -68,6 +68,7 @@ class AssociativeLine { this.onNodeDragging = this.onNodeDragging.bind(this) this.onNodeDragend = this.onNodeDragend.bind(this) this.onControlPointMouseup = this.onControlPointMouseup.bind(this) + this.onBeforeDestroy = this.onBeforeDestroy.bind(this) // 节点树渲染完毕后渲染连接线 this.mindMap.on('node_tree_render_end', this.renderAllLines) @@ -90,6 +91,8 @@ class AssociativeLine { this.mindMap.on('mouseup', this.onControlPointMouseup) // 缩放事件 this.mindMap.on('scale', this.onScale) + // 实例销毁事件 + this.mindMap.on('beforeDestroy', this.onBeforeDestroy) } // 解绑事件 @@ -106,6 +109,13 @@ class AssociativeLine { this.mindMap.off('node_dragend', this.onNodeDragend) this.mindMap.off('mouseup', this.onControlPointMouseup) this.mindMap.off('scale', this.onScale) + this.mindMap.off('beforeDestroy', this.onBeforeDestroy) + } + + // 实例销毁时清除关联线文字编辑框 + onBeforeDestroy() { + this.hideEditTextBox() + this.removeTextEditEl() } // 画布点击事件 diff --git a/simple-mind-map/src/plugins/RichText.js b/simple-mind-map/src/plugins/RichText.js index 455ae3a9..96e6e6b5 100644 --- a/simple-mind-map/src/plugins/RichText.js +++ b/simple-mind-map/src/plugins/RichText.js @@ -286,6 +286,13 @@ class RichText { this.cacheEditingText = '' } + // 删除文本编辑框元素 + removeTextEditEl() { + if (!this.textEditNode) return + const targetNode = this.mindMap.opt.customInnerElsAppendTo || document.body + targetNode.removeChild(this.textEditNode) + } + // 获取编辑区域的背景填充 getBackground(node) { const gradientStyle = node.style.merge('gradientStyle') diff --git a/simple-mind-map/src/plugins/associativeLine/associativeLineText.js b/simple-mind-map/src/plugins/associativeLine/associativeLineText.js index e130dc7a..e5edca8d 100644 --- a/simple-mind-map/src/plugins/associativeLine/associativeLineText.js +++ b/simple-mind-map/src/plugins/associativeLine/associativeLineText.js @@ -82,6 +82,13 @@ function showEditTextBox(g) { } } +// 删除文本编辑框元素 +function removeTextEditEl() { + if (!this.textEditNode) return + const targetNode = this.mindMap.opt.customInnerElsAppendTo || document.body + targetNode.removeChild(this.textEditNode) +} + // 处理画布缩放 function onScale() { this.hideEditTextBox() @@ -178,6 +185,7 @@ export default { styleText, onScale, showEditTextBox, + removeTextEditEl, hideEditTextBox, updateTextEditBoxPos, renderText,