Feat:实例销毁时删除文本编辑框的元素

This commit is contained in:
街角小林 2024-08-12 14:06:30 +08:00
parent 8bbbc082c7
commit 13a1f989c3
5 changed files with 37 additions and 4 deletions

View File

@ -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 (

View File

@ -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)

View File

@ -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()
}
// 画布点击事件

View File

@ -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')

View File

@ -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,